找到一個DIV,效果基本show它的所有孩子的div,再經過所有這些都在漲,顯示了在經過了slideDown那些孩子的div之一。
片段的jQuery:
$('.toggleTriggersWrapper .toggleTrigger')
.click(function(){
var $togglePanesWrapper = $(this).closest('.toggleTriggersWrapper').next('.togglePanesWrapper').eq(0);
var IDtoShow = '#' + this.className.match(/toggle\-.+?\b/);
if($(IDtoShow).is(":hidden")) {
$togglePanesWrapper.children('.togglePane').slideUp('slow', function(){
console.log($(this));
if($(this).is(":last-child")){
/* if last-child, then we've closed them all, and can now show the new one */
$togglePanesWrapper.children(IDtoShow).slideDown('slow');
};
});
};
})
問題:
我認爲應該發生的是,每次我點擊我的「.toggleTrigger」的元素之一,它發現我的$ togglePanesWrapper的孩子然後按順序爲每個單元做一個slideUp,然後當最後一個孩子向上滑動時,將滑動我的一個元素。
因此,console.log行應該按順序輸出每個子元素。但事實並非如此。根據我點擊的.toggleTrigger,我的console.log以不同的順序寫出元素。
我知道這還不是很多,但基於上述情況,是否有這種情況發生的原因?
有沒有辦法強制重新排序的jQuery對象來匹配DOM中的對象順序?
每請求,這裏就是我引用HTML:
<div class="toggleTriggersWrapper">
<h2>Header</h2>
<input type="radio" name="radiogroup" value="x" class="toggle-pane1 toggleTrigger" id="relationship-x" />
<input type="radio" name="radiogroup" value="y" class="toggleTrigger toggle-pane2" id="relationship-y" />
<input type="radio" name="radiogroup" value="z" class="toggleTrigger toggle-pane2" id="relationship-z" />
</div>
<div class="togglePanesWrapper">
<div class="togglePane" id="toggle-pane1">
hi!
</div>
<div class="togglePane" id="toggle-pane2">
yo!
</div>
</div>
請你分享一些HTML。 – Mottie 2009-12-08 21:58:29
@fudgey我已經更新了相關HTML – 2009-12-08 22:06:33