Jquery 第n个儿童问题

Jquery 第n个儿童问题,jquery,web,selector,css-selectors,Jquery,Web,Selector,Css Selectors,我正在使用:n子选择器来选择某些元素 案例1: <div class='item show'> <div class='item show'> <div class='item show'> <div class='item show'> <div class='item show'> <div class='item show'> <div class='item show'> <div class='i

我正在使用:n子选择器来选择某些元素

案例1:

<div class='item show'>
<div class='item show'>
<div class='item show'>
<div class='item show'>
<div class='item show'>
<div class='item show'>
<div class='item show'>
<div class='item show'>

案例2:

<div class='item show'>
<div class='item'>
<div class='item'>
<div class='item show'>
<div class='item'>
<div class='item'>
<div class='item show'>
<div class='item show'>

我的代码从案例1开始,并执行$(“#outerDiv.show:nth child(3n-2)”来选择每三个元素。这很好用。然后,如果用户更改了一些设置,一些元素将丢失其show类并消失在屏幕上,代码如案例2所示。问题是,现在当我执行$('#outerDiv.show:nth child(3n-2)')选择器时,它仍然将其视为案例1,尽管我可以在控制台中清楚地看到它是案例2。我做错什么了吗。对不起,我不能发布实际的代码,所以我举了一个简单的例子


谢谢

第n个子项
选择器将获取所有元素,而不考虑类别

使用
$。每个
并在循环中分配类

​$('#outerDiv .show').each(function(i){
    if( i%3 === 0){
       $(this).addClass('a'); 
    }        
});​

我将从关闭div元素开始

而不是


下面是一个快速演示,它选择DOM中的每三个(和第一个)元素:

我希望它能有所帮助:)

使用和功能:

 $('#outerDiv .show').filter(function(){
    return $(this).css('display') !== 'none';
 }).filter(":nth-child(3n - 2)");

首先,将元素列表筛选为那些没有属性的元素
display:none
。接下来,过滤第n个子项

在这种情况下,恐怕您必须手动循环。@avovk-如果这不能解决您的问题,请告诉我,我将尝试想出另一种解决方案。
 $('#outerDiv .show').filter(function(){
    return $(this).css('display') !== 'none';
 }).filter(":nth-child(3n - 2)");