如何获得第n个jQuery元素

Sam*_*Lee 299 jquery

在jQuery中,$("...").get(3)返回第3个DOM元素.返回第3个jQuery元素的函数是什么?

CMS*_*CMS 306

您可以使用:eq选择器,例如:

$("td:eq(2)").css("color", "red"); // gets the third td element
Run Code Online (Sandbox Code Playgroud)

Traversing/eq功能:

$("td").eq(2).css("color", "red");
Run Code Online (Sandbox Code Playgroud)

另外,请记住索引是从零开始的.

  • 作为同义词,你也可以使用[`:nth()`](https://github.com/jquery/sizzle/wiki/Sizzle-Documentation#wiki-selectors)选择器 - 不要与`混淆:第n个孩子()` (7认同)

Dyk*_*kam 299

为什么不首先浏览(短)选择器页面?

这是::eq()运营商.它就像使用一样get(),但它返回jQuery对象.

或者你也可以使用.eq()功能.

  • 我发誓我必须去看看每一个*.*单*.*时间*. (54认同)
  • 这不应该是`.eq()`而不是`:eq()`? (23认同)
  • 是的,`.eq()`更适合OP的问题.`:eq()`在字符串参数中用于`$`,而`.eq()`是现有jQuery对象的方法. (15认同)
  • "为什么不首先浏览(短)选择器页面?" - 因为"eq"是一个非常糟糕的名字,我经常只是跳过它,因为对我来说eq意味着比较.... (4认同)
  • @JoelWorsham取决于期望的行为.`$('select').find('option').eq(n)`基本上会忽略分组,并将所有选项作为一个整体.如果你想要每组,这样的东西是必要的:`$('select').find('optgroup').each(function(){$(this).find('option').eq(n) ......;})` (3认同)
  • 令人惊讶的是,有多少人赞成评论中实际上有答案的内容。这是指向`.eq()`的链接-https://api.jquery.com/eq/,因为答案链接会将您带到`:eq()` (2认同)
  • 是的,最好将其命名为“ at()”或“ atIndex()”以使其可被发现。但是jQuery API设计通常质量低下。 (2认同)

nic*_*ckf 49

如果您可以控制构建jQuery对象的查询,请使用 :eq()

$("div:eq(2)")
Run Code Online (Sandbox Code Playgroud)

如果你无法控制它(例如,它是从另一个函数或其他东西传递的),那么使用 .eq()

var $thirdElement = $jqObj.eq(2);
Run Code Online (Sandbox Code Playgroud)

或者如果你想要它们的一部分(比如第三,第四和第五个元素),请使用 .slice()

var $third4th5thElements = $jqObj.slice(2, 5);
Run Code Online (Sandbox Code Playgroud)

  • 对于偶然发现这个答案的人来说,需要注意的一点是,nth-child选择器是1,而:eq或.eq()是0 (4认同)

Joe*_*asE 11

我想你可以用它

$("ul li:nth-child(2)").append("<span> - 2nd!</span>");
Run Code Online (Sandbox Code Playgroud)

它在每个匹配的ul中找到第二个li并记录它.


til*_*lak 11

.eq() - 一个整数,表示元素的从0开始的位置.

例如:

考虑一个包含简单列表的页面:

<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我们可以将此方法应用于列表项集:

$( "li" ).eq( 2 ).css( "background-color", "red" );
Run Code Online (Sandbox Code Playgroud)

有关更多信息:.eq()