2014-02-20 37 views
-3

我有一個JavaScript按鈕,可以將鼠標懸停在上面時進行動畫處理。問題是動畫是動態的,它會在你懸停執行懸停事件時緩存div的寬度和高度(動畫的擴展將取決於div的寬度和高度......)。在HTML/DOM完全加載後加載javascript的最安全方法?

在正常的頁面加載過程中,這很好,但是當頁面加載速度很慢時,我在部分加載的div上執行懸停事件。我注意到緩存的寬度和高度是錯誤的,導致我的動畫往往不合適。

我應該如何確保懸停事件後,我所有的HTML完全加載,而不是之前......(以便我不緩存錯誤的值)?

+0

不要綁定事件處理程序,直到DOM就緒事件觸發,或者在窗口加載事件之後,如果您需要等待圖像,請綁定事件處理程序。 –

+1

您是否曾嘗試過使用'$(window).on('load',function(){'? – Alvaro

+0

)如果調整窗口大小,當它們全部更改時,是否也更新大小?要解決此問題,您應該不會緩存大小,並在'animationStart()'方法內檢測它們。 – pid

回答

1

不確定緩存div的尺寸是什麼意思。 什麼div?

DOM準備就緒後添加事件。

如果你正在使用jQuery你可以做這樣的事情:

function animationStart(){ 
    // ... 
} 

function animationEnd(){ 
    // ... 
} 

$(document).ready(function(){ 
    $('#my-button').hover(animationStart, animationEnd); 
}); 
+0

+1擊敗了我:-) – Stumblor

0

將您的懸停事件的文檔準備,在DOM加載完成後,將只被解僱的約束力。

$(document).ready(function() { 
    $("#hover").hover(
     function() { 
      // hover on 
     }, 
     function() { 
      // hover off 
     } 
    ); 
})