jQuery选择器
一、jQuery基本选择器
页面的任何操作都需要节点的支撑,开发者如何快速高效的找到指定的节点也是前端开发的一个重点。
jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处理复杂选择过程与性能优化,更多专注业务逻辑的编写。
jQuery支持主流的CSS1~CSS3选择器的写法,我们从最简单的也是最常用的说起:
1.1ID选择器$(“#id”);
ID选择器也是基本的选择器,jQuery内部使用JavaScript函数document。getelementById()来处理ID的获取。
原生语法的支持总是非常高效的,所以在操作DOM的获取上,如果采用ID的话尽然考虑这个选择器
注意:ID是唯一的,每个ID值在一个页面中只能使用一次。如果多个元素分配了相同的ID,将只匹配ID选择集合的第一个DOM元素。但这种行为不应该发生;有超过一个元素的页面使用相同的ID是无效的
1.2class选择器 $(“.classname”);
类选择器,相对ID选择器来说,效率相对会低一点,,但是优势就是可以多选
同样的jQuery在实现上,对于类选择器,如果浏览器支持,jQuery使用JavaScript的原生GetElementClassName()函数来实现的
1.3 element元素选择器$(“标签名称”);
元素选择器,根据给定HTML标记名称选择所有的元素
搜索指定元素标签名的所有节点,这个是一个集合的操作。同样的也有原生方法getElementsByTagName()函数支持
1.4全选择器 $(“*”)
全选择器,也是*选择器
在CSS中,经常会在第一行写下这样一段样式* {padding: 0; margin: 0;}
通配符*意味着给所有的元素设置默认的边距。jQuery中我们也可以通过传递*选择器来选中文档页面中的元素
1.5层级选择器
文档中所有的节点之间都是有这样或者那样的关系。我们可以把节点之间的关系可以用传统的家族关系来描述,可以把文档树当作一个家谱,那么节点与节点之间就会存在父子,兄弟,祖孙的关系了。
选择器中的层级选择器就是用来处理这种关系子元素,后代元素,兄弟元素 相邻元素
通过一个列表,对比层级选择器的区别
选择器 | 描述 |
$("ancestor descendant") | 后代选择器:选择给定的祖先元素的所有后代元素,一个元素的后代可能该元素的一个孩子,孙子,曾孙等 |
$("parent > child") | 子选择器:parent的直接子元素 |
$("prev + next") | 相邻兄弟选择器:匹配所有紧接在prev元素后的next元素 |
$("prev ~ siblings") | 一般兄弟选择器:匹配prev元素之后的所有sibkings元素 |
jQuery选择器之基本筛选选择器
很多时候我们不能直接通过基本选择器与层级选择器找到我们想要的元素,为此jQuery提供了一系列的筛选选择器用来更快捷的找到所需的DOM元素。
筛选选择器很多都不是CSS的规范,而是jQuery自己为了开发者的便利延展出来的选择器
筛选选择器的用法与CSS中的伪元素相似,选择器用冒号“:”开头
选择器
$(“:first”)获取匹配第一元素 例如:$(“li:first”);
$(“:last”)获取匹配的最后一个元素 例如:$(‘li:last’);
$(“:not(selector)”)去除所有与给定选择器匹配的元素。 例如:$(‘input:not(:checked)’)
$(“:even”)匹配所有索引值为偶数的元素,从0开始计数。 例如:$(“li:even”)
$(“:odd”)匹配所有索引值为奇数的元素,从0开始计数。 例如:$(“li:odd”)
$(“:eq(index)”)匹配一个给定索引值的元素,从0 开始计数。 例如:$(“li:eq(1)”)
$(“:gt(index)”)匹配所有大于给定索引值的元素,从0开始计数 。 例如:$(“li:gt(0)”)
$(“:tl(index)”)匹配所有小于给定索引值的元素,从0开始计数 。 例如:$(“li:lt(2)”)
$(“:header”)匹配h1,h2,h3之类的标题元素 。 例如:$(“:header”)
$(“:root”)选择该文档的根元素。在HTML中,文档的根元素,和$(“:root”)选择的元素一样,永远是<html>元素。
$(“:animated”)匹配所有正在执行动画效果的元素(只有对不在执行动画效果的元素执行一个动画特效)。 例如:$(“:header”).css(“background”,“#EEE”);
$(“:focus”)匹配当前获取焦点的元素。
$(“:contains(text)”)匹配包含给定文本的元素,一个用以查找字符串。
$(“:empty”)匹配所有不包含子元素或者文本的空元素。
$(“:has(selector)”)匹配含有选择器所匹配的元素的元素。