将类添加到循环中的元素(jquery)

时间:2014-03-26 05:45:49

标签: jquery

我需要添加前三个元素的类,然后是接下来的三个元素,依此类推。我尝试使用此代码,但ID无法正常工作。

$.fn.toggle_class = function () {
var lis = $(this).find('li'); 
var len = lis.lenght();

while(true) {
    for (var i = 0; i < len; i += 3) {
        first = i;
        second = i + 1;
        third = i + 2;
        lis.delay(100).removeClass('visible');
        lis.eq(first).addClass('visible');
        lis.eq(second).addClass('visible');
        lis.eq(third).addClass('visible');
    }
}

return $(this);
};

$('ul').toggle_class();

http://jsfiddle.net/2de3n/9/

出了什么问题?我该如何解决?

1 个答案:

答案 0 :(得分:1)

您应该使用setInterval()而不是永无止境的循环,以便将控件移交给浏览器:

$.fn.toggle_class = function () {
    var lis = this.find('li'),
    len = lis.length,
    i = 0; // initialize pointer

    setInterval(function() {
        lis
          .removeClass('visible')
          .slice(i, i + 3)
          .addClass('visible');

        // advance pointer
        i = (i + 3) % len;
    }, 100);

    return this;
};

$('ul').toggle_class();

一次只调用此功能非常重要。

Demo