我有许多元素(兄弟姐妹)可能隐藏也可能不隐藏(应用“隐藏”类)。
我想根据其索引选择元素之一,因此使用 :nth-child 伪类。
但是,我想选择第 n 个可见子元素,而不是所有元素的第 n 个子元素。所以我尝试了类似的东西:
$('.product-cell'):not('is-hidden'):nth-child(2);
但这不起作用,是我弄乱了语法还是不可能像这样堆叠伪类?我该如何解决这个问题?
我有许多元素(兄弟姐妹)可能隐藏也可能不隐藏(应用“隐藏”类)。
我想根据其索引选择元素之一,因此使用 :nth-child 伪类。
但是,我想选择第 n 个可见子元素,而不是所有元素的第 n 个子元素。所以我尝试了类似的东西:
$('.product-cell'):not('is-hidden'):nth-child(2);
但这不起作用,是我弄乱了语法还是不可能像这样堆叠伪类?我该如何解决这个问题?
但这不起作用,是我弄乱了语法还是不可能像这样堆叠伪类?我该如何解决这个问题?
实际上,两者都是。
如果您使用冒号语法,则需要将所有选择器放在一个字符串中。如果要使用多个方法调用,则使用句.
点而不是冒号:
。
此外,:nth-child()
总是选择一个元素,它是其父元素的第 n 个子元素,无论它是隐藏的还是具有某个类等。所以你需要使用:eq()
而不是:nth-child()
,像这样:
// :eq() is zero-indexed so :eq(1) selects the second match
$('.product-cell:not(.is-hidden):eq(1)')
首先,您在not
语句中缺少类选择器,但是 jQuery 中的not()
andnth-child()
选择器被设计为您的初始选择器的一部分。
$('.product-cell:not(.is-hidden):nth-child(2)')
如果我的理解是正确的,
您正在寻找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