1

我有一堆属于特定类的 div,比如标签。语义结构看起来像这样:

<div class = "tabs" >_______</div>
<div class = "tabs" >_______</div>
<div class = "tabs" >_____</div>

访问 div 的第一个和最后一个元素很容易,例如

$('.tabs:first') or
$('.tabs:last')

但是到第二个(并假设里面有多个其他 div,那么除了第一个或最后一个之外的所有 div)似乎对我产生了语法错误,例如:

$('.tabs:second') or $('.tabs:third')不按预期工作。

谁能指出这里有什么问题?

4

3 回答 3

6

尝试使用eq()选择器,注意索引是从零开始的:

$(".tabs:eq(1)");
于 2012-07-24T21:25:34.637 回答
6

有两种方法可以做到这一点,使用.eq()方法或:eq()选择器。

.eq() 方法:

jQuery 文档建议您这样做的方式是使用该.eq()方法。

// eq() is zero-based, so this would get the second element
$('.tabs').eq(1)

一个方便的功能是它.eq()也可以采用负数,这会导致函数从末尾开始。

// This would take the second element from the end
$('.tabs').eq(-2);

:eq() 选择器

jQuery 还提供了一个:eq()选择器,它的工作方式基本上与该.eq()方法的工作方式相同。所以你也可以这样做:

$('.tabs:eq(1)')

请注意,即使这样工作,最好使用.eq()方法而不是选择器。该方法在现代浏览器中具有更好的性能,并且:eq()选择器不支持负数,因此受到了一些限制。

于 2012-07-24T21:25:55.917 回答
3

查看 jQuery:first选择器文档: http ://api.jquery.com/first-selector/

您会注意到这是一个 jQuery 扩展,而不是 CSS 规范的一部分。这:first也相当于:eq(0),这意味着如果你想获得第二个元素,你可以用:eq(1).

如果您不需要 CSS 选择器中的过滤器,您可以简单地使用.eq 方法获取元素,如下所示:

$('.tabs').eq(0) // get the first element
$('.tabs').eq(1) // get the second element
$('.tabs').eq(2) // get the third element
$('.tabs').eq(-2) // get the second to last element
$('.tabs').eq(-1) // get the last element
于 2012-07-24T21:31:47.467 回答