:eq() 选择器| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

: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>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/eq-selector.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。