通过div循环?

通过div循环?

问题描述:

我有这样的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

$('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

$('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