2014-03-26 35 views
1

我需要在循環中添加前三個元素的類,然後是下三個元素,等等。我試圖使用這段代碼,但id不起作用。將類添加到循環中的元素(jQuery)

$.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/

有什麼不對?我該如何解決它?

+0

張貼您的html和當您要添加元素上的類。 –

+0

沒有休息條件的'while(true)'不可能正常工作。 –

回答

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

+0

你的代碼不起作用:(http://jsfiddle.net/2de3n/18/ –

+1

@ truslivii.lev已解決。 –

+0

但我需要無限循環。在最後三個項目的添加類後,我需要啓動再次從開始。 –

相關問題