2013-05-08 63 views
2

我有下面的代碼逐個顯示li項目。jquery通過li逐一循環

var show = 1; 
var current = show - 1; 
var length = 9; 

var gallery = $('.quotescroll'); 



var galleryItems = gallery.children('li'); 
length = galleryItems.length; 


setInterval(function(){ 
    current = (current+1)%60; 

    galleryItems.eq(current).slideDown(); 
    galleryItems.eq(current - show).slideUp(); 
}, 10000); 

我唯一的麻煩是我現在需要它連續循環無序列表。我會如何實現這一目標?

編輯

我發現這個代碼不正是我需要的,但它沒有漂亮的幻燈片動畫。

setInterval(function() { 
    var firstLi = $('.quotescroll li').first().detach(); 
    $('.quotescroll').append($(firstLi)); 
}, 5000); 
+1

你所說的 「持續」 是什麼意思? – tymeJV 2013-05-08 15:44:08

+0

我想,他希望在最後一次到達'setInterval'時重複他正在做的事情。 – 2013-05-08 15:47:59

+0

@tymeJV我猜想,通過「連續」,他意味着當它到達最後,他希望它回到開始並重新遍歷它們。也許「循環」比「循環」更好。希望肖恩會證實這一點或澄清他們的實際意思。 – 2013-05-08 15:48:10

回答

3

假設quotescroll是您的列表類:

$('.quotescroll li').each(function() { 
    //this now refers to each li 
    //do stuff to each 
}); 
+0

對不起,即時通訊新的這一點。我將如何使用這個顯示每個li? – 2013-05-08 15:50:17

2
$(".quotescroll li").each(function(index) { 
     console.log(index + ": " + $(this).text()); 
}); 

應該這樣做

詳細信息可以在這裏找到:http://api.jquery.com/each/

+1

通過鎖定li元素,您可能會將其他li的代碼鎖定在他的代碼中,以防止他們成爲攻擊目標。您需要更具體:$(。quotescroll li)或$(gallery,'li')。 – 2013-05-08 16:21:30

+0

@Lior是的,這意味着更多的通用'選擇器',但我想這裏有一些明確的。 – eidsonator 2013-05-08 16:38:09

+0

太棒了!它只會爲他服務 – 2013-05-08 16:43:05

2

遍歷一個jQuery對象

對於透過裏循環的選擇器,比較好的做法是使用各()函數迭代一個jQuery對象,執行功能爲每一個匹配元素。

按照您的例子:

$(gallery, 'li').each(function() { 
    //Your code goes here 
    //$(this) will target the current li being iterated 
}); 

它的語法是:$(selector).each(function(index, Element))

您還可以檢查jQuery的API文檔here