2009-12-08 11 views
0

我的目標:jQuery的扭轉我的元素的數組(或因此纔出現)

找到一個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> 
+0

請你分享一些HTML。 – Mottie 2009-12-08 21:58:29

+0

@fudgey我已經更新了相關HTML – 2009-12-08 22:06:33

回答

1

原因它在不同的順序是因爲你正在做效果基本show定時動畫。如果列表中的元素已經隱藏,那麼jquery會跳過定時動畫並跳轉到執行console.log()的回調函數。

+0

的帖子啊...所以jquery可能遍歷元素的順序,但是我的console.log()由於動畫的時間延遲而報告它們失序。這就說得通了。現在想出一個解決方法。 ;) – 2009-12-08 22:47:58

+1

http://www.gmarwaha.com/blog/2009/06/09/jquery-waiting-for-multiple-animations-to-complete/ – PetersenDidIt 2009-12-08 22:49:34

+0

@petersendidit謝謝!這正是解決方案。很棒!看起來像jQuery可以使用這種內置到框架中的東西 – 2009-12-08 22:59:54

相關問題