2011-05-14 240 views
2

我有這樣的HTML:通過div循環?

<div id="container"> 

<div class="boxes">first box</div> 
<div class="boxes">second box</div> 
<div class="boxes">third box</div> 

</div> 

<a href="jquery">Show me next box</a> 

考慮到最初只有第一個框是可見的。當我點擊'顯示下一個框'時,我想隱藏當前可見框,並且列表中的下一個.boxes將出現。我認爲,我認爲它唯一接近的是.each函數,但我不應該遍歷所有的div,只是爲了展示一個函數。

+0

看看bazillion相關的問題。 – 2011-05-14 16:16:50

+1

@tomalak我搜索之前問這個,但我沒有找到任何相關的 – dynamic 2011-05-14 16:17:59

回答

5
$('a').click(function() { 
    var visibleBox = $('#container .boxes:visible'); 
    visibleBox.hide(); 
    var nextToShow = $(visibleBox).next('.boxes:hidden'); 
    if (nextToShow.length > 0) { 
     nextToShow.show(); 
    } else { 
     $('#container .boxes:hidden:first').show(); 
    } 
    return false; 
}); 

Live demo

+0

@Darin:非常好。但它實際上並不循環。 – 2011-05-14 16:22:00

+0

':visible'適用於'display:none'? OPS看到你的現場演示答案是有效的 – dynamic 2011-05-14 16:22:14

+0

@ yes123,如果一個元素應用'display:none'風格,那麼':visible'將不會選擇它。 – 2011-05-14 16:23:31

1
$('a').click(function(){ 
    $('.boxes').filter(':visible').hide().next().add('.boxes:first').last().show(); 
}); 
+0

我喜歡你拴住東西的方式。另外,它不應該是'.first'而不是'.last'嗎? – 2011-05-14 16:58:42

+0

你會這樣想的,不是嗎?不,它應該是'.last',因爲出於某種原因,這些元素總是以_first-in-document_的順序出現。 – 2011-05-14 17:04:13

+0

哈哈,你是對的。我記得在最近版本的發行說明中閱讀:) – 2011-05-14 17:15:32