jQuery选择器
jQuery选择器
web开发的两个要素
- 在使用HTML开发页面时,有两个基本点
- 选择HTML页面上的哪些元素
- 在这些元素上做哪些动作
在JavaScript中有document.getElementById()等方式获取元素,但这种方式太古老。麻烦、局限
jQuery选择器
- jQuery选择器用于选择器用于选中需要操作的页面元素
- 语法1:jQuery(选择器表达式)
- 语法2:$(选择器表达式)
jQuery选择器是一种更加快捷高效的方式:
上面的语法1和语法2是等价的,当在页面中引入jQuery文件后,使用jQuery关键字和$是完全等价的;符合需求,高效准确地选择器表达式是关键
jQuery基本选择器
基本选择器是jQuery最基础也是最常用的选择器表达式
语法 说明 $(“#id”) ID选择器,指定id元素的对象 $(“标签”) 元素选择器,选择指定标签名的选择器(例如a标签等) $(“.class”) 类选择器,选中拥有指定的CSS类的元素 $(“S1,S2,SN”) 组合选择器,对元素进行组合
id选择器和类选择器最常用:
标签选择器有点提示页面元素间的耦合性,所以可能用的也不多;
jQuery基本选择器的范例
我们使用前面做过的jQuery的简单案例来试一下组合选择器
jQuery层叠选择器
层叠选择器睡觉哦根据元素的位置关系来获取元素的选择器表达式
选中某一个节点的所有后代节点,后代节点包括子节点、子节点的子节点语法 说明 $(“ancestor descendant”) 后代选择器 $(“ancestor > descendant”) 子选择器 $(“ancestor ~ descendant”) 兄弟选择器
jQuery后代选择器示例1
选择a标签,这个a标签必须是li标签的后代标签:
jQuery后代选择器示例2:
即使a标签不是div标签的直接子标签,但是后代选择器依旧能够选中
jQuery后代选择器示例3
span后的a标签
jQuery子选择器示例1
必须是直接子节点才会选中;
例如在这个jQuery简单案例中:a标签必须是li标签的直接子标签才会被选中
在这里是只有li标签后的a标签被选中然后jquery,span后的a标签不会被选中
jQuery兄弟选择器示例1
选择p标签,这个p标签需要是span标签的兄弟标签,是平级节点;
jQuery属性选择器
属性选择器是根据元素的属性值来选择元素的选择器表达式
语法 说明 $(“selector[attribute=value]”) 选中的属性值完全等于具体值得组件 $(“selector[attribute^=’value’]”) 选中得属性值以某值开头得组件 $(“selector[attribute$=’value’]”) 选中属性值以某值结尾得组件 $(“selector[attribute*=’value’]”) 选中属性值包含某值得组件
比如当前得需求是:获取超链接地址为”网易”的元素
属性选择器中,selector是前面讲到的选择器表达式,其他选择器后面跟着[],[]中的是某个属性的属性值,相当于是再原有选择器的基础上二次筛选
jQuery属性选择器示例:完全匹配
完全匹配:a[href=”http://www.baidu.com"]:是选中a标签,这个a标签的href属性值是"http://www.baidu.com";
所以这里只有百度的标签是高亮的
jQuery属性选择器示例2:开头匹配
拿到所有邮箱的超链接:a[href^=’http://mail']
jQuery属性选择器示例3:结尾匹配
拿到所有中国名校的超链接:a[href$=’edu.cn’]
jQuery属性选择器示例4:包含匹配
拿到所有包含”edu.cn”字段的标签属性并增加css样式:a[href*=’edu.cn’]
jQuery属性选择器说明
说明1:属性选择器中,属性可以是其他任何属性不止只有上面的a标签可以用,页面中的input属性也是可以用的:input[type=’text’];这个意思是选择input标签,且器type属性为text的元素
说明2:如上input[type=’text’];为什么选择左边的那个文本框,而不是选择右边的文本框呢?这是因为,属性选择器明确书写了某个属性的元素:
说明3:如上input[type=”text”];形如这个,其需要用单引号的;
很显然是因为:$(“input[type=”text]”).addClass(“highlight”);所以需要使用单引号
jQuery位置选择器
位置选择器是指通过位置获取指定的元素,例如”获取第三个元素”
语法 说明 $(“selector:first”) 获取第一个元素 $(“selector:last”) 获取最后一个元素 $(“selector:even”) 获取偶数位置的元素(从0开始) $(“selector:odd”) 获取奇数位置的元素(从0开始) $(“selector:eq(n)”) 获取指定位置的元素(从0凯斯)
jQuery位置选择器示例1:获取第一个元素
获取class=”myclass”的第一个元素:.myclass:first
jQuery表单选择器
表单选择器是获取表单元素的简化形式,例如:获取所有的文本框
之所以叫表单选择器,是因为这个选择器是直接针对表单中的元素进行选择的
语法 说明 $(“selector:input”) 所有表单输入的集合元素 $(“slector:text”) 获取表单汇总文本框 $(“selector:password”) 获取表单中密码框 $(“welector:submit”) 获取提交的按钮 $(“selecrror”) 获取重置的按钮 ……
jQuery表单选择器示例1:获取表单中输入框中的值
:input是选择页面中的所有输入框中的值
jQuery表单选择器示例2:获取表单汇总文本框
jQuery表单选择器总结
(1):input选取所有input、textarea、select和button元素-集合元素;
(2):text选择所有单行文本框,即type=text-集合元素;
(3):password选择所有密码框,即type=password-集合元素;
(4):radio选择所有单选框,即type=radio-集合元素;
(5):checkbox选择所有复选框,即type=checkbox-集合元素;
(6):submit选取所有提交按钮,即type=submit-集合元素;
(7):reset选取所有重置按钮,即type=reset-集合元素;
(8):image选取所有图像按钮,即type=image-集合元素;
(9):button选择所有普通按钮,即button元素-集合元素;
(10):file选择所有文件按钮,即type=file-集合元素;
(11):hidden选择所有不可见字段,即 type=hidden-集合元素;
标签选择器和表单选择器的区别
经过测试:如果使用input标签选择器时候,其会选中所有的input标签,不是input的标签不会被选中;即使标签选择器很严谨,也很明确;使用:input表单选择器的时候,会选取所有input、textarea、select和button元素;即其范围会大一些
所以目前可以暂时认为:(1)标签选择器和表单选择器作用基本类似,但在某些情况下。表单选择器可能范围更大一些;(2)感觉标签选择器更加明确,在实际业务中,当然更倾向标签选择器;
不同选择器的可以组合使用
尤其是其他选择器和位置选择器的组合,以应对某些特别的需求
示例1:
如::input:last先使用表单选择器选中input,然后通过位置选择器二次筛选,选中最后一个
示例2:
li a:last;先使用层叠选择器选中li标签的后代a标签,然后选择最后一个