jquery – 限制:nth-​​child结果为可见元素

在jQuery中,我想为所有可见元素添加一个类,这些元素是第5个子元素或更大元素,而另一个类则添加到不是第4个子元素的每个元素.以前,我这样做:

$overlay.find('> .container .content .selector').not(':nth-child(4n)').addClass('hasRightMargin');
$overlay.find('> .container .content .selector:nth-child(n+5)').addClass('hasTopMargin');

但是,现在我正在切换第一个.selector的可见性,并且:nth-​​child没有考虑可见性,因此这不能正常工作,因为它仍在计算不可见元素:

$overlay.find('> .container .content .selector:visible').not(':nth-child(4n)').addClass('hasRightMargin');
$overlay.find('> .container .content .selector:visible:nth-child(n+5)').addClass('hasTopMargin');

有没有办法在一个选择器中做我想要的?或者我是否必须使用每个元素遍历所有.selector元素并手动过滤它们?

解决方法

我认为这应该可以解决问题.

$overlay.find('> .container .content .selector:visible:not(:odd:odd)').addClass('hasRightMargin');
$overlay.find('> .container .content .selector:visible:gt(3)').addClass('hasTopMargin');

您的主要问题是第n个孩子选择所有父元素的第n个子元素,而不是集合中的第n个元素.另外,请记住选择器如:odd,:even,:gt,:lt是0索引的.所以:奇数选择元素1,3,5等.这是页面上的第2,第4,第6个元素.并且:奇数:奇数选择页面上的每个第4个元素.同样,:gt(3)选择索引为4或更多的所有元素,这是第5个元素以及更多元素.

有关jsfiddle的信息,请参阅here,我认为这证明了您在寻找什么.注意传递的隐藏div.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...