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");

但它不会起作用。我也不会尝试任何东西:可见

有任何想法吗?谢谢。

4

3 回答 3

13

您正在寻找的方法是filter(). 它将根据给定的选择器过滤掉一个 jQuery 对象列表。由于找不到“非:hidden”选择器,我使用了相反的:visible.

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

希望这可以帮助!

于 2012-10-26T04:43:55.807 回答
2

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

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

在此处查看 jsfiddle 中的示例

于 2012-10-26T08:56:43.177 回答
1

尝试链接:选择器

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

如这个答案所示:

jQuery - 多个 :not 选择器

于 2012-10-26T04:47:12.773 回答