2012-05-21 47 views
1

jQuery(document).ready(function($){});是一種已知的很好的方法來保護$導致的錯誤。jQuery的窗口加載包裝

我很好奇的是,如果jQuery(window).load(function($){});會以同樣的方式工作?

基本上,我現在擁有的是:

jQuery(document).ready(function($){ 

    $(window).load(function(){ 
     // ... 
    }); 

}); 

這完全是不必要的,以我來說,這簡化了任何想法?我需要具有jQuery的正確映射到$(或任何正確的說法是)的安全性,但作爲window.load()

回答

8

我喜歡這個...

(function($){ 

    $(window).load(function(){ 
     //everything is loaded (images, scripts, etc.) 
    }); 

    // and/or 

    $(document).ready(function(){ 
     // the dom is in place, but everything is not necessarily loaded 
    }); 

})(jQuery); 

注:如:jQuery是此腳本之前包括這隻會工作。我從來沒有遇到任何問題,jQuery未定義這種方式。此外,你永遠不會有$未定義的問題,因爲你傳遞給你的匿名函數。

9

相同的時間你可以這樣做:

(function($) { 

    $(window).load(function(){ 
     // ... 
    }); 

})(jQuery); 

匿名函數會立即而不是被執行等待問題中的代碼準備好DOM。在函數$內將引用jQuery,因此不會與在匿名函數外定義的任何其他$衝突。

+0

我給你一個,因爲你擊敗了我的答案,但你的答案沒有選擇 – lbstr

1

您可以創建本地參數:

(function($) { 
    $(...) 
})(jQuery); 

此代碼執行的匿名函數與一個名爲$參數,傳遞jQuery作爲參數值。