2011-11-07 53 views
0

我有這段代碼片斷,有時會起作用,但有時它會在第一次觸發後停止。這可能是由於我的電腦有時慢。但理想情況下,我希望第二個觸發器僅在第一個觸發器完成時觸發。這將是很好,如果有可能對觸發事件的回調函數..可能有嵌套觸發器?

$('#div1').fadeIn(1000, function(){ 
    $('#first').trigger('click'); 
    $('#footer').fadeIn(2000, function(){ 
     $('#second').trigger('click'); 
    }); 
}); 

如何得到它的工作好有什麼建議? 如果可能的話我也想有第三個觸發器......

+0

你可能附加footer.fadeIn功能,第一個觸發。 –

+0

代碼沒有出現任何問題。它將按順序運行這四個事件,每次在繼續之前等待動畫完成。這兩個click()函數會發生什麼?看起來是什麼問題?如果tigger中有動畫(「點擊」)功能,則不會等待這些動畫完成。 – jfriend00

+0

第二次單擊事件依賴於第一次,所以如果第一次稍微延遲,則代碼會中斷。有時候它確實有用,但是其他時候,我認爲這取決於速度,就好像第二個可能會在第一個完成之前發生的那樣,但是如果div加載$(#first).click - hasn沒有及時裝滿。 – grai

回答

1

你就不能這樣做:

$('#div1').fadeIn(1000, function(){ 
    $('#first').trigger('click'); 
}); 

$('#first').click(function() { 
    $('#footer').fadeIn(2000, function(){ 
     $('#second').trigger('click'); 
    }); 
}); 
+0

這不是我想到的,它意味着必須使用全局變量和東西,並且以後會變得非常混亂。但是我明天會嘗試這樣的事情,以某種方式修改#first事件函數......感謝您的建議。 – grai

+0

@grainne:你在哪裏看到一個全局變量? – PeeHaa

+0

我在評論中有點不清楚,抱歉。我只是想着如何像這樣的解決方案意味着我將不得不修改已經編寫的函數等,而我希望我可以很好地嵌套在同一塊代碼中的每個觸發器。 – grai