:eq() 选择器
分类:选择器 > 基本筛选选择器 | 选择器 > jQuery扩展选择器
eq selector
描述:在匹配的集合内,选择索引为n的那个元素。
加入于: 1.0
jQuery( ":eq(index)" )index: 要匹配的元素的基于0的索引。
加入于: 1.8
jQuery( ":eq(-index)" )indexFromEnd: 要匹配的元素的基于0的索引,从最后一个元素开始往前倒数。
索引相关的选择器(:eq()
、:lt()
、:gt()
、:even
、:odd
)筛选匹配它们的前面的表达式的元素的集合。它们根据元素在匹配集合中的次序来收窄集合。举个例子,如果元素首先是用样式类选择器.myclass
选择,并返回四个元素,这些元素分别给予索引号0到3。
注意,因为JavaScript数组使用基于零的索引,这些选择器反映了事实。这就是为什么$( ".myclass:eq(1)" )
选择了document中带样式类myclass的第二个元素,而不是第一个。相较之下,:nth-child(n)
使用基于1的索引,以顺众CSS规范文档。
在jQuery 1.8以前的版本中,:eq(index)
选择器的索引号并不接受一个负值(虽然.eq(index)
方法是接受负值的)。
其它说明
- 因为
:eq()
是一个jQuery扩展,并不是CSS规范文档的一部分,所以查询:eq()
不能充分利用原生DOM提供的querySelectorAll()
方法来提高性能。要想在现代浏览器中获得较好的性能,请使用$("your-pure-css-selector").eq(index)
来代替它。
示例
找到第三个td。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>eq demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <table border="1"> <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr> <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr> <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr> </table> <script> $( "td:eq( 2 )" ).css( "color", "red" ); </script> </body> </html>
演示结果
向列表项目应用三个不同的样式,以演示:eq()
的设计目的是选择一个元素,与此同时,:nth-child()
或一个循环结构比如说.each()
内的:eq()
能够选择多个元素。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>eq demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <ul class="nav"> <li>List 1, item 1</li> <li>List 1, item 2</li> <li>List 1, item 3</li> </ul> <ul class="nav"> <li>List 2, item 1</li> <li>List 2, item 2</li> <li>List 2, item 3</li> </ul> <script> // 把黄色背景色应用到单个<li>上 $( "ul.nav li:eq(1)" ).css( "backgroundColor", "#ff0" ); // 向每个<ul class="nav">内部的第二个<li>中的文本应用斜体 $( "ul.nav" ).each(function( index ) { $( this ).find( "li:eq(1)" ).css( "fontStyle", "italic" ); }); // 向<ul class="nav">的后代元素应用红色的文本颜色 // 针对每个属于它们的父元素的第二个子元素的<li> $( "ul.nav li:nth-child(2)" ).css( "color", "red" ); </script> </body> </html>
演示结果
通过瞄准倒数第二个<li>,向第二个列表的项目2添加样式类
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>eq demo</title> <style> .foo { color: blue; background-color: yellow; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <ul class="nav"> <li>List 1, item 1</li> <li>List 1, item 2</li> <li>List 1, item 3</li> </ul> <ul class="nav"> <li>List 2, item 1</li> <li>List 2, item 2</li> <li>List 2, item 3</li> </ul> <script> $( "li:eq(-2)" ).addClass( "foo" ) </script> </body> </html>
演示结果