jQuery - 2个伪选择器?

时间:2012-10-26 04:38:20

标签: javascript jquery css jquery-selectors css-selectors

  

可能重复:
  Combining jQuery :not and :nth-child selectors

这可能吗?

这是我的代码:

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

如果我想将其应用到列表中,但只对列表中的那些项目可见(有些项目被隐藏,我不希望它们被计算在内),它将如何实现?我想的是:

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

但它不起作用。我尝试过的任何东西都不会出现:可见

有什么想法吗?感谢。

3 个答案:

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

如下所示:

jQuery - multiple :not selector