我需要添加前三个元素的类,然后是接下来的三个元素,依此类推。我尝试使用此代码,但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();
出了什么问题?我该如何解决?
答案 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();
一次只调用此功能非常重要。