2013-03-22 90 views
0

我有這樣一個基本的菜單:jQuery的addClass與延遲

<ul> 
    <li>item 1</li> 
    <li>item2</li> 
</ul> 

如何添加類的「當前」爲我<li>元素每隔800毫秒的每一個,當然,刪除舊的當前元素?

+0

閱讀在JS計時器:https://developer.mozilla.org/en/docs/DOM/window.setTimeout – 2013-03-22 11:00:41

回答

2

這會永遠循環通過任意數量的列表項:

$(document).ready(function() { 
    var $lis = $("li"), i = -1; 
    function nextCurrent() { 
     $lis.eq(i).removeClass("current"); 
     $lis.eq(i=(i+1)%$lis.length).addClass("current"); 
     setTimeout(nextCurrent, 800); 
    } 
    nextCurrent(); 
}); 

演示:http://jsfiddle.net/nnnnnn/4skLV/

而且我可能會建議之前,你的下一個職位你一個問題閱讀這篇文章:What have you tried?

+0

謝謝你,男人,這是確切的我想了 ! – lchabrand 2013-03-22 13:13:03

+1

+1,我不害怕,你** **的方式落後** ... :) – gdoron 2013-03-22 13:16:21

+0

@loloMinou,然後接受它,(或其他答案更好或寫自己的答案,如果你能更好地回答它比所提供的答案)與所需答案左側的複選標記。 – gdoron 2013-03-22 13:22:05

2
$('li').each(function(i){ 
    var $that = $(this); 
    setTimeout(function(){ 
     $that.addClass('current').siblings().removeClass('current'); 
    }, i *800); 
}); 

Live DEMO

+1

我回答,雖然你沒有顯示任何研究工作只是爲了挑戰的樂趣,我不確定它是雖然明智... – gdoron 2013-03-22 11:05:19

+0

我會給你一個upvote,但我永遠不會趕上你的聲譽。 (只是在開玩笑,爲你的努力+1當你真的沒有配得上你的努力 - 儘管我繼續發佈自己的版本,只是爲了它的樂趣...) – nnnnnn 2013-03-22 11:30:41