2011-05-04 75 views
4

應該在什麼和應該從jQuery.ready()?應該在什麼和應該從jQuery.ready()?

從性能的角度來看,我已經閱讀過將所有代碼包裝在jQuery.ready()之內的地方,但這並不是一個有效的方法。

那麼我的問題是:應該在什麼和什麼可以是沒有問題的oustide(我想代表可以保留在外面,但它是一個快速猜測)?

謝謝

回答

3

爲了獲得最佳性能,請在關閉body標記之前放置js。這樣你可以完全消除jquery。 UI下載速度很快,因爲它是not blocked,腳本被下載,當js被解析並調用時,可以確定上面dom中的元素已準備好被操縱。

+0

好的提示。但是關於jQuery代碼,什麼樣的代碼(事件,ajax,...)實際上可以在DOM之外生活,沒有問題? – Cybrix 2011-05-09 14:14:07

+0

@Cybrix如果您在底部包含腳本,它們全部都是! – redsquare 2011-05-09 14:21:17

+0

抱歉,您是第一次正確回答問題。我剛剛讀了你的答案有點太快了。 :P – Cybrix 2011-05-09 14:25:40

0

jQuery.ready()在頁面加載完成後調用。見jQuery.ready()的第一句話。如果你希望事件在頁面加載完成之前觸發,那麼jQuery.ready()將不會成爲現實。

0

你應該保持功能delcarations如

fnc = function() { ... }; 

或任何其他聲明。因爲如果你全部使用它,只有當整個DOM已經加載時,代碼纔會開始執行。否則,它會在下載後立即開始執行。當你的javascript需要下載DOM時,jQuery包裝應該只存在。

var blah = function() { 
    //... 
}; 

$(function() { //same as jQuery(document).ready or $(document).ready 
    blah(); 
}); 
+1

但是你用你所有的函數decs來膨脹窗口對象。最好在單個應用程序名稱空間中聲明這些函數。 – redsquare 2011-05-04 18:24:05

+0

@redsquare哦,這實際上是一個非常棒的點。謝謝! – omninonsense 2011-05-04 18:28:00

+0

沒問題,高興幫忙:) – redsquare 2011-05-14 18:11:34