jQuery:not()+ nth-child

Xav*_*avi 2 jquery filter css-selectors jquery-selectors

具有以下DOM结构:

<ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li class="click_here"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li class="click_here"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li class="click_here"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我试图每隔5"li"添加"last"类,但不包括那些有"click_here"类的类.

我发现这不起作用:

$('ul li:not(.click_here)').filter(':nth-child(5n)').addClass('last');
Run Code Online (Sandbox Code Playgroud)

我也尝试了几种方法,比如:

$('ul li').filter(':not(.click_here)').filter(':nth-child(5n)').addClass('last');
$('ul li').not($('.click_here')).filter(':nth-child(5n)').addClass('last')
Run Code Online (Sandbox Code Playgroud)

它似乎没有跳过具有"click_here"类的"li"项目.

所以我最后不得不这样做:

        $.each($('ul li').filter(':not(.click_here)'),function(i,v){
            if((i+1)%5 == 0) $(this).addClass('last');
        });
Run Code Online (Sandbox Code Playgroud)

你有没有人知道我在第一种方法中做错了什么?

非常感谢!

Aru*_*hny 5

我不认为你可以使用nth-child,但试试吧

$('ul li:not(.click_here)').filter(function (i) {
    return i % 5 == 4
}).addClass('last');
Run Code Online (Sandbox Code Playgroud)

演示:小提琴