2010-02-09 107 views
2

我有一個Web界面的系統,有一個左側導航。在導航上,我可以展開/摺疊一些菜單。我使用jQuery效果基本show /了slideDown動畫他們是這樣的:jQuery的動畫沒有完成(slideUp/slideDown)

if (enable) 
{ 
    navbar_slide_down = true; 
    $j(l1_folder).slideDown("normal", function() { 
     navbar_slide_down = false; 

     on_navbar_animation_complete(); 
    }); 
} 
else 
{ 
    navbar_slide_up = true; 
    $j(l1_folder).slideUp("normal", function() { 
     navbar_slide_up = false; 

     on_navbar_animation_complete(); 
    }); 
} 

兩個動畫同時運行,以提供手風琴般的效果。這幾乎適用於所有情況。

我現在遇到的問題是,在內容框架(與導航框架不一樣)中執行某些操作後,slideDown和slideUp功能不再有效。動畫開始,但幾乎立即停止,並且回調從未被解僱。這會導致菜單鎖定。我只能在FireFox 3.5.7中重現這個問題(其他版本似乎沒問題)。如果我打開Firebug,問題不會發生。

我試過從jQuery 1.3.2升級到1.4.1,沒有運氣。

是否有任何原因動畫會失敗並且不會調用回調?我怎樣才能調試這與未統一的jQuery?

+0

考慮找到'console.log'的發生,因爲這是爲什麼當FireBug打開時它可能工作,而當它關閉時失敗 – 2010-02-09 00:28:02

+0

刪除對記錄器的任何引用並沒有改變任何東西 – jthompson 2010-02-09 01:44:58

回答

0

問題是順序依賴的(即:點擊這個,然後,和掛起將發生)。我發現在第一頁的問題:

addEvent(window, 'unload', end_page); 

它改爲:

addEvent(window, 'onbeforeunload', end_page); 

我仍然不知道爲什麼,這將影響外框(並導致jQuery的動畫打破),但我最好的猜測是卸載處理程序中的代碼在第二頁上運行,並在某處發生衝突。