jquery当前可见的第n个孩子

Mic*_*han 11 jquery css-selectors

我可以像这样设计每个第4个"项目"div

  jQuery(".item:nth-child(4n)").addClass("fourth-item");
Run Code Online (Sandbox Code Playgroud)

并且工作正常,但后来我隐藏了一些项目,显示了其他一些项目,并希望重新做这个样式,但只有每个第四项可见的样式.所以我有一个将删除这个样式并重新应用它的函数,但我需要在重新应用样式时指定它只是每隔4个可见项目,而不是每个第4个项目.我知道":visible"选择器,但是没有看到用正确的nth-child选择器链接它,任何想法?

我尝试过这样的各种事情无济于事......

jQuery(".item").removeClass("fourth-item");
jQuery(".item:visible:nth-child(4n)").addClass("fourth-item");
Run Code Online (Sandbox Code Playgroud)

Emi*_*nov 29

:nth-child无论他们的造型是什么,都会扫描父母的孩子.计数:nth-child是相对于父元素,而不是前一个选择器.这在jQuery文档中解释为:nth-child:

使用时:nth-child(n),无论它们是什么,都会计算所有子项,并且仅当指定的元素与附加到伪类的选择器匹配时才选择它.

使用更简单的方法each完全符合您的要求:

$('#test li:visible').each(function (i) {
    if (i % 4 == 0) $(this).addClass('fourth-item');
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,认为实际上应该是(i + 1)%4 :) (3认同)
  • 完美的答案。我确实必须使用@mbehan 的 i + 1 建议才能在每 4 个元素上按预期工作。 (2认同)