eq()选择每个第4课

时间:2011-07-06 15:44:11

标签: jquery

我想使用eq()来选择每个第4项来添加一个类以使右边距为零。我得到了一套混合产品,其中有一个子导航可以切换产品。

nth()不起作用,因为即使display:none和选择了特定的类,它也会计算所有产品。

Jquery的

$('li.prod').toggle(true);

$('li.prod:visible:nth-child(4n)').addClass('prod-end');

$('li.button').click(function () {

$('li.button').removeClass('active');
$(this).addClass('active');

$('li.prod').removeClass('prod-end');

    if ( $('li#all').hasClass('active')) {

        $('li.prod').toggle(true);

        $('li.prod:visible:nth-child(4n)').addClass('prod-end');

    } else {

        $('li.prod').toggle(false);

        $('li.' + $(this).text()).toggle(true);

        $('li.' + $(this).text() + ':visible:nth-child(4n)').addClass('prod-end');

        }

});

$('li.button').removeClass('active'); $(this).addClass('active'); $('li.prod').removeClass('prod-end'); if ( $('li#all').hasClass('active')) { $('li.prod').toggle(true); $('li.prod:visible:nth-child(4n)').addClass('prod-end'); } else { $('li.prod').toggle(false); $('li.' + $(this).text()).toggle(true); $('li.' + $(this).text() + ':visible:nth-child(4n)').addClass('prod-end'); }

HTML

    <div class="subNav">
            <ul>
              <li class="button active" id="all">all</li>
              <li class="button" id="men_apparel">men</li>
              <li class="button" id="women_apparel">women</li>
              <li class="button" id="kids">kids</li>
            </ul>
     </div>

<div class="products">
        <ul class="products_wrapper">

         <li class="prod women">      
</li>
<li class="prod women">      
</li>
<li class="prod women">      
</li>
<li class="prod women">      
</li>
<li class="prod men">      
</li>
<li class="prod men">      
</li>
<li class="prod men">      
</li>
<li class="prod kids">      
</li>
<li class="prod kids">      
</li>
<li class="prod kids">      
</li>
<li class="prod kids">      
</li>   
</ul>
</div>

提前致谢!

5 个答案:

答案 0 :(得分:2)

怎么样

$('.foo:visible:nth-child(4)')

答案 1 :(得分:1)

    $('.products_wrapper li').each(function(){
        var i = $(this).index()+1;
        if (i%4==0) {
            $(this).addClass('prod-end');
        };
    });

答案 2 :(得分:1)

我认为你可能不得不使用each来处理一些可能被隐藏的事实:

$("ul li:visible").each(function(i, el){
    if(i%4 === 3){
        $(this).addClass("prop_end");
    }
});

http://jsfiddle.net/RjbVV/2/

答案 3 :(得分:0)

更改

$('li.prod:eq(4n)').addClass('prod-end');

$('li.prod:nth-child(4n)').addClass('prod-end');

小提琴:http://jsfiddle.net/KuMzp/


或者这是你的意思吗?

小提琴:http://jsfiddle.net/yuU9j/

$('li.prod').toggle(true);

$('li.prod:nth-child(4n)').addClass('prod-end');

$('li.button').click(function() {
    $('li.button').removeClass('active');
    $(this).addClass('active');
    $('li.prod').removeClass('prod-end');
    if ($('li#all').hasClass('active')) {
        $('li.prod').toggle(true);
        $('li.prod:nth-child(4n)').addClass('prod-end');
    } else {
        $('li.prod').toggle(false);
        $('li.' + $(this).text()).toggle(true);
        $('li.' + $(this).text()).eq(3).addClass('prod-end');
    }
});

答案 4 :(得分:0)

下面:

DEMO

$("ul li:nth-child(4n)").addClass("prop-end");