jQuery中的选择器
一:css选择器
(1)css选择器介绍:
1.CSS选择器是一项出色的技术,它使网页的结构和表现形式完全分离,利用CSS选择器能轻松的对某个元素添加样式而不改动HTML结构。只需通过添加不同CSS规则就可以得到各种不同样式的网页.
2.使某个样式应用于特定的HTML元素.首先需找到该元素.在CSS中.执行这一任务的表现规则称为CSS选择器.
(2)css选择器的分类:
选择器 语法 描述 示例
标签选择器 E{CSS规则} 以文档元素作为选择符 td{font-size:14px;width:120px} a{text-decoration:none;}
ID选择器 #ID{CSS规则} 以文档元素的唯一标识 #note{font-size:14px;width:120px}
符ID作为选择符
类选择器 E.className{css规则} 以文档元素的class作为选择器 div.note{font-size:14px;} .dream{font-size:14px;}
群组选择器 EI E2 E3{css规则} 多个选择符应用同样的样式规则 td,p,div.a{font-size:14px;}
后代选择器 E F{css规则} 元素E的任意后代元素F #link a{color:red}
通配选择符 *{css规则} 以文档的所有元素标签选择器 *{font-size:14px;}
注释: 几乎所有的主流浏览器都支持上面的这些常用的选择器.
(3)css其它选择器:
.伪类选择器(E:Pesude-Elements{CssRules})
.子选择器(E>F{CssRules})
.临近选择器(E+F{CssRules})
.属性选择器([attr]{CssRules})
注释:当遗憾的是主流浏览器并非完全支持所有的Css选择器。把CSS应用到网页中有3种方式,即行内样式表、内部样式表和外部样式表。
class作为连接样式和网页结构的纽带。
二:jQuery选择器:
(1)jQuery选择器的介绍:
1.jQuery选择器完全继承了CSS的风格.
2.利用jQuery选择器可以非常便捷和快速的找出特定的DOM元素.为他们添加相应的行为.而无需担心浏览器是否支持.jQuery的行为规则都必须在获取元素后才能生效.
(2)jQuery选择器的写法与Css选择器的写法十分相似,只不过两者作用的效果不同。
(3)jQuery选择器与Css选择器的区别:
1.CSS选择器找到元素后是添加样式.
2.而jQuery选择器找到元素后是添加行为.
特别注意:jQuery中涉及操作Css样式的部分比单纯的CSS功能更为强大,并拥有跨浏览器的兼容性。
(4)jQuery选择器的优点:
1.简洁的写法:$()函数在很多javascript类库中都被作为一个选择器元素来使用,在JQuery中也不例外。其中,$("#ID")用来代替document.getElementById()函数,及同过ID来获取元素;$("tagName")用来代替
2.支持CSS1到CSS3的选择器:jQuery jQuery选择器CSS1、CSS2的全部和CSS 3的部分选择器,同时它也有少量的独有的选择器,使用css选择器时,开发人员需考虑主流选择器是否支持某些选择器,而在JQuery中。开发人员则可以放心使用JQuery选择器而无需考虑浏览器是否支持这些浏览器。
注释:为了能有更快的选择器解析速度,从1.1.3.1版后,JQuery废弃了不常使用的XPath选择器。但在引用相关的插件后,依然可以使用XPath选择器.
3.完善的处理机制:使用JQuery选择器不仅比使用传统的getElementById()和getElementByTagName()函数 简洁。而且还避免了某些错误.
(5)jQuery选择器分为:基本选择器、层次选择器、过滤选择器和表单选择器。
---基本选择器
1.基本选择器:基本选择器是jQuery中最常用的选择器,也是最简单的选择器,它通过元素Id、class和标签名等来查找DOM元素。并且在网页中,id只能使用一次,class允许重复使用。
2.基本选择器说明:
选择器 描述 返回 示例
#id 根据给定的id匹配一个元素 单个元素 $("#test")选取id为test的元素
.class 根据给定的类名匹配元素 集合元素 $(".test")选取所有class为test的元素
element 根据给定的元素匹配元素 集合元素 $("p")选取所有的<p>元素
* 匹配所有元素 集合元素 $("*")选取所有的元素
Selector1, 将每一个选择器
selector2, 匹配到的元素合并后一起返回 集合元素 $("div,span,p,myClass")
……, 选取所有<div>,<span>和拥有class为myClass的<p>标签的一组元素
selectorN
----层次选择器
1.什么是层次选择器:通过DOM元素之间的层次关系来获取特定的元素.例如后代元素、子元素、相邻元素和兄弟元素等。
2.层次选择器的介绍说明:
选择器 描述 返回 示例
$("ancestor descendant") 选取ancestor元素里的所有 集合元素 $("div span")选取div里所有的<span>元素
descendant(后代)元素
$("parent>child") 选取parent元素下的child元素, 集合元素 $("div>span")选择<div>
与$("ancestor descendant") 元素下元素名是<span>的子元素
有区别,$("ancestor descendant")
选择的是后代元素
$("prev+next") 选取紧接在prev元素后的next元素 集合元素 $(".one+div")选取class为one的下一个<div>元素
$("prev~siblings") 选取prev元素之后的sibling元素 集合元素 $("#two~div")选取id为two的元素后面的所有<div>元素
3.选择器与替代方法
选择器 方法
$(".one+div") $(".one").next("div")
$("#prev~div") ("#prev").nextAll("div")
4.siblings()与$("prev~siblings")
1.$("#prev~div")选择器只能选择"#prev"元素后面的同辈<div>元素,而siblings()方法与前后位置无关,只要是同辈节点就都能匹配.
注释:$({"prev ~ siblings")在选取元素时,不包含prev元素,选取prev元素之后的sibling元素,并且不包含本身
-----过滤选择器
1.过滤选择器介绍:过滤选择器主要是通过特定的过滤规则来筛选出所选DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器都以一个冒号(:)开头。
2.过滤选择器的分类(根据不同过滤规则)
基本过滤选择器
内容过滤选择器
可见性过滤选择器
属性过滤选择器
子元素过滤选择器
表单对象属性过滤选择器
3.过滤选择器的说明:
----基本过滤选择器
选择器 描述 返回 示例
:first 选取第一个元素 单个元素 $("div:first")选取所有div元素中的第一个div元素
:last 选取最后一个元素 单个元素 $("div:last")选取所有div元素中的最后一个div元素
:not(selector) 去除所有与给定选 集合元素 $("input:not(.myclass)")选取class不是myclass的input元素
择器匹配的元素
:even 选取所有索引值 集合元素 $("input:even")选取索引值偶数的input元素
为偶数的元素,
从0开始计数
:odd 选取所有索引值 集合元素 $("input:odd")选取索引值奇数的input元素
为奇数的元素,
从0开始计数
:eq(index) 选取一个给定 单个元素 $("input:eq(1)")选取索引值等于1的input元素
索引值=index的元素
:gt(index) 选取所有大于给定 集合元素 $("input:gt(1)")选取索引值大于1的input元素
索引值(index)的元素
:gt(index) 选取所有大于给定 集合元素 $("input:gt(1)")选取索引值大于1的input元素
索引值(index)的元素
:gt(index) 选取所有大于给定 集合元素 $("input:gt(1)")选取索引值大于1的input元素
索引值(index)的元素
----内容过滤选择器
选择器 描述 返回 示例
:contains(text) 选取文本内容 集合元素 $("div:contains("我")")选取含有文本"我"的div元素
含有text的元素
:empty 选取不包含 集合元素 $("div:empty")选取不包含子元素(文本)的div元素
子元素或文本
的空元素
:has(selector) 选取含有选择器 集合元素 $("div:has(p)")选取含有<p>元素的div元素
所匹配的元素的元素
:has(selector) 选取含有选择器 集合元素 $("div:has(p)")选取含有<p>元素的div元素
所匹配的元素的元素
----可见性过滤选择器
选择器 描述 返回 示例
:hidden 得到所有隐藏的元素 集合元素 Div:hidden得到所有隐藏的div
:visible 得到所有可见元素 集合元素 Div:visible得到所有可见的div
----属性过滤选择器
选择器 描述 返回 示例
[attribute] 选取拥有此属性的元素 集合元素 $("div[id]")选取拥有属性id的元素
[attribute=value] 选取属性的值 集合元素 $("div[title=test]")选取属性title等于"test"的div
为value的元素
[attribute!=value] 选取属性的值 集合元素 $("div[title!=test]")选取属性title不等于"test"的div
不等于value的元素
[attribute^=value] 选取属性的值 集合元素 $("div[title^=test]")选取属性title以"test"开头的div
以value^开始的元素
[attribute$=value] 选取属性的值 集合元素 $("div[title$=test]")选取属性title以"test"结束的div元素
以value结尾
[attribute*=value] 选取属性的值 集合元素 $("div[id][title$=test]")选取拥有属性id,
含有value 并且属性title含有"test"的div元素
----子元素过滤选择器
选择器 描述 返回 示例
:nth-child 匹配其父元素下的 集合元素 在每个ul查找第2个li:
(index/even/odd/equation) 第N个子元素或奇偶元素
$("ul li:nth-child(2)")
奇数:nth-child(even)
偶数:nth-child(odd)
:first-child 匹配第一个子元素 集合元素 在每个ul中查找第1个li:
$("ul li:first-child")
:last-child 匹配最后一个子元素 集合元素 在每个ul中查找最后1个li:
$("ul li:last-child")
:only-child 如果某个元素是 集合元素 在ul中查找是唯一子元素的li:
父元素中唯一的
子元素,那将会被匹配
4.子元素过滤选择器功能:
1.:nth-child(even)能选取每个父元素下的索引值是偶数的元素。
2.:nth-chile(odd)能选取每个父元素下的索引值是基数的元素。
3.:nth-chile(2)能选取每个父元素下的索引值等于2的元素。
4.:nth-chile(3n)能选取每个父元素下的索引值是3的倍数的元素。(n从0开始)
5.:nth-chile(3n+1)能选取每个父元素下的索引值足(3n+1)的元素。(n从0开始)
----表单对象属性过滤选择器
选择器 描述 返回 示例
:enabled 选取所有可用元素 集合元素 $("#form1:enabled")选取
id为form1的表单内的
所有可用元素
:disabled 选取所有不可用的元素 集合元素 $("form1:disabled")选取
id为form1的表单内的所有
不可用的元素
:checked 选取所有被选中的元素 集合元素 $("input:checked")选取所有被
(单选框,复选框) 选中的<input>元素
:selected 选中所有被选中的选项元素 集合元素 $('' "select:sekected",)选取
所有被选中的选项元素
5. 表单选择器的作用:为了使用户更加灵活的操作表单(及可也通过表单选择器更加方便的获得表单的某个或某类型的元素)
6.表单选择器注意事项
1: $("#form1 :input")与$("#form1 input")的区别?
$("#form1 :input"):获取ID为form1下所有的<input>、<textarea>、<select>和<button>元素
.$("#form1 input"): 获取ID为from1下所有的input标签
2:表单中取值
单标签:以"/>"结尾的标签<button id='btb' value='aaa' />,统一以val()取值,得到的是该标签中value属性的值.
双标签:成对出现的标签,例如<body></body>,统一以.html()取值,得到的值就是这对标签中的html值.
表单元素不一定在表单中.
7.jQuery虽然提供了许多实用的选择器,但也可能无法满足各种多变的业务需求,为此jQuery提供了选择器的扩展.
1:MoreSelectors for jQuery(这是jQuery的一款插件,用于增加更多的选择器,例如.color可以匹配颜色,:colindex可以表格中的列等等).
插件地址http://plugins.jquery.com/project/moreselectors.
2:Basic XPath(这个插件可以让用户使用基本的XPath,但由于使用的人不多,且降低了选择器的效率,jQuery取消了默认对XPath的支持,改用插件来实现).
插件地址http://plugins.jquery.com/project/xpath
8.其他使用CSS选择器的方法
1:除了jQuery提供了强大的选择器支持外,也有一些其他JavaScript脚本也提供了纯粹的CSS选择器的支持。
(1)Document.getElementsBySelector() 可以通过选择器来获取文档元素
示例:Document.getElementsBySelector("div#main p a.external")
(2)CssQuery
这是Dean Edwards编写的一款易用CSS选择器查找元素的脚本,支持所有的CSS1,CSS2以及部分CSS3选择器,它支持一些jQuery尚不支持的选择器,
例如:E:link ,E:nth-last-child(n)…….
语法结构如下:Elements=cssQuery(selector [,from ]);
(3)querySelectorAll() 这是W3C在Selectors API草案中提到的方案,此方法也是用于实现通过CSS选择器来获取元素的。
IE8的Beta2中已经率先实现了此方法。相信其他几大浏览器也能很快就能实现此方法。
jQuery 的作者John Resig 也表示将会利用querySelectorAll这个浏览器原生的方法来重构jQuery选择器,
同时增加一些jQuery扩展的选择器,届时jQuery选择器的执行效率将会大大提高.