找到.filter()之后的第n个孩子

时间:2014-04-05 21:38:54

标签: jquery css

我试图为显示的元素设置css属性!= none

这适用于使用.filter()

后的第一个孩子
$("#container > li").filter(':not(:hidden)').first().css("margin-right", "0");

但是我也想为nth-child(3n + 1)设置,这不起作用,因为它在计算第n个孩子时也计算隐藏的元素

 $("#container > li:nth-child(3n+1)").filter(':not(:hidden)').css("margin-right","0");

我也试过

$("#container > li").filter(':not(:hidden)').find(':nth-child(3n+1)').css("margin-right", "0");

任何想法如何在过滤掉那些没有隐藏的人之后为每4个孩子设置css?

是否存在类似于.thirst()的选择器,用于nth-child()?

2 个答案:

答案 0 :(得分:2)

一种可能的方法(针对第一次filter调用返回的集合中的每个第4个元素):

$("#container > li")
   .filter(':visible')
   .filter(function(i) {
     return (i + 1) % 4 === 0; 
   })
   .css('margin-right', '0');

答案 1 :(得分:1)

$("#container > li:visible").css("margin-right", function(i) {
    return i%3 ? null : 0;
});

FIDDLE