0

我有许多元素(兄弟姐妹)可能隐藏也可能不隐藏(应用“隐藏”类)。

我想根据其索引选择元素之一,因此使用 :nth-child 伪类。

但是,我想选择第 n 个可见子元素,而不是所有元素的第 n 个子元素。所以我尝试了类似的东西:

$('.product-cell'):not('is-hidden'):nth-child(2);

但这不起作用,是我弄乱了语法还是不可能像这样堆叠伪类?我该如何解决这个问题?

4

3 回答 3

3

但这不起作用,是我弄乱了语法还是不可能像这样堆叠伪类?我该如何解决这个问题?

实际上,两者都是。

如果您使用冒号语法,则需要将所有选择器放在一个字符串中。如果要使用多个方法调用,则使用句.点而不是冒号:

此外,:nth-child()总是选择一个元素,它是其父元素的第 n 个子元素,无论它是隐藏的还是具有某个类等。所以你需要使用:eq()而不是:nth-child(),像这样:

// :eq() is zero-indexed so :eq(1) selects the second match
$('.product-cell:not(.is-hidden):eq(1)')
于 2012-04-12T11:33:40.417 回答
1

首先,您在not语句中缺少类选择器,但是 jQuery 中的not()andnth-child()选择器被设计为您的初始选择器的一部分。

$('.product-cell:not(.is-hidden):nth-child(2)')
于 2012-04-12T11:30:20.373 回答
0

如果我的理解是正确的,

您正在寻找nth child没有名为的类,它只是非类.is-hidden的最后一个孩子.is-hidden

假设您的 HTML 如下所示:-

<ul class='product-cell'> 
    <li>Glen</li> 
    <li class='is-hidden'>Tane</li> 
    <li>Ralph</li>
    <li class='is-hidden'>David</li>
    <li class='is-hidden'>David111</li>
    <li>David22</li>
</ul>

要获得最后一个孩子,下面是 JQuery

$('.product-cell li[not(.is-hidden)]:last-child').text()

结果:

David22
于 2012-04-12T11:57:15.340 回答