jQuery - 2个伪选择器?

9

可能是重复问题:
如何组合使用 jQuery 的 :not 和 :nth-child 选择器?

这个可能行吗?

这是我的代码:

$("ul#filterlist li:nth-child(3n)").css("marginTop", "0");

如果我想将其应用于列表,但仅适用于列表中可见的项目(有些被隐藏起来,我不希望它们被计算在内),该怎么办?我在想类似于:

$("ul#filterlist li:nth-child(3n)").not(":hidden").css("marginTop", "0");

但这不起作用。我试过使用:visible,但也不行。有什么想法吗?谢谢。

这不是:not的重复,因为:not并不是解决方案的一部分,它只是我认为它在逻辑上可以工作的方式,但实际上它并没有,谢谢。 - Phill
3个回答

15

你要寻找的方法是filter()。它将根据给定的选择器来过滤jQuery对象列表。由于我找不到“not :hidden”选择器,所以我使用了相反的:visible

$("ul#filterlist li:nth-child(3n)").filter(":visible").css("marginTop", "0");

希望这可以帮到你!


2

如果您不想计算隐藏元素,可以尝试使用以下代码。

$("ul#filterlist li:visible").filter(function(index){ 
    return (index+1)%3 == 0?true:false;
}).css("marginTop", "0");

在jsfiddle中可以看到示例,点击这里


1
尝试链接选择器。
$("ul#filterlist li:nth-child(3n):not(:hidden)").css("marginTop", "0");

就像这个答案所示:

jQuery - 多个:not选择器


如果它不是 :hidden,那么它一定是 :visible - alex
可见性也可以是:collapse,但当用于非表格元素时,它的作用就像是隐藏。 - WebChemist
另一个示例:$(“#divdetails span:nth-child(2):contains('s')”) - Iman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接