这可能吗?
这是我的代码:
$("ul#filterlist li:nth-child(3n)").css("marginTop", "0");
如果我想将其应用到列表中,但只对列表中的那些项目可见(有些项目被隐藏,我不希望它们被计算在内),它将如何实现?我想的是:
$("ul#filterlist li:nth-child(3n)").not(":hidden").css("marginTop", "0");
但它不起作用。我尝试过的任何东西都不会出现:可见
有什么想法吗?感谢。
答案 0 :(得分:11)
您正在寻找的方法是filter()
。它将根据给定的选择器过滤掉jQuery对象列表。由于我找不到“不:hidden
”选择器,因此使用了相反的:visible
。
$("ul#filterlist li:nth-child(3n)").filter(":visible").css("marginTop", "0");
希望这有帮助!
答案 1 :(得分:2)
如果您不想计算隐藏的元素,可以尝试使用以下代码。
$("ul#filterlist li:visible").filter(function(index){
return (index+1)%3 == 0?true:false;
}).css("marginTop", "0");
请参阅jsfiddle here
中的示例答案 2 :(得分:1)
尝试链接:选择器
$("ul#filterlist li:nth-child(3n):not(:hidden)").css("marginTop", "0");
如下所示: