2010-02-12 62 views
1

我正在加載頁眉,頁腳和動態主體的模板網站上工作。我有一個類,在其中指定將根據當前頁面加載哪些腳本以及用戶登錄狀態。我已經寫了幾個jQuery插件,並在頁面加載時我需要通過文檔準備好了,有沒有限制?

$(文件)的插件調用。就緒(函數(){// $()。thePlugin() }) ;

我個人在每個頁面上都沒有超過一個文檔就緒腳本,但我沒有看到其他選項。有4或5個腳本調用該函數是不好的做法嗎?

回答

0

這不是一個你要調用的函數,而是一個你正在關注的事件......多次執行它沒有任何問題,但不要依賴它們以特定順序執行。

側前端,這是一個相當的快捷方式:

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

而且,如果這些都是常見的所有網頁,將它們移動到外部.js文件。如果沒有太多的事情發生,那麼一些沒有找到任何東西的選擇器不會受到傷害。這只是根據您使用的代碼百分比佔多少%的時間進行權衡。

2

在一頁上有多個ready()塊就沒問題。事實上,它已經準備好了,所以你可以做到這一點。舊的方法(通常在load()事件使用)做的事情,如:

window.onload = function() { 
    ... 
} 

但很快爆發時,多個腳本都分配load()處理程序,這導致:

function addLoad(handler) { 
    var current = window.onload; 
    if (current) { 
    window.onload = function() { 
     current(); 
     handler(); 
    } 
    } else { 
    window.onload = handler; 
    } 
} 

嗯,有一點點除此之外,這是基本原則。 jQuery本質上爲你處理這個樣板,所以你的事件處理程序不會互相打開。

多個ready()處理程序使您的代碼更容易維護,可能更易於閱讀。如果你只做了幾個,那麼就不用擔心。如果你達到數百個(在同一頁面上),那麼也許是時候重新思考了。

另一種方法是將標記寫入PHP中的緩衝區,並將所有ready()代碼寫入另一個緩衝區,最後可以按照您喜歡的順序寫出這些緩衝區。您可以有效地將您的ready()處理程序合併爲一個這種方式。

+0

感謝基本答案我一直在尋找! – cdnicoll 2010-02-12 15:59:19

+0

你應該接受這個問題作爲答案。只需要一秒鐘。 – 2011-09-21 15:48:20