2010-11-22 63 views
1

嘿傢伙, 快速提問:在一個網站上使用兩個$(window).load(function(e){函數實際上是否可行和有語義?jquery和javascript:兩個加載函數?

例如我有一個header.php其中包含<script>標記與一些jQuery - $(window).load(function(e){是它的一部分。在它下面我有另一個標籤鏈接到一個外部.js文件,它又有一個$(window).load(function(e){

這是允許和可以嗎?

謝謝!

回答

4

是的。您所做的每個load()聲明將簡單地附加到現有處理程序。

docs on .bind()(這是處理實際工作的load()快捷方式功能):

當一個事件到達的元素,綁定到該事件類型的元件的所有處理程序被解僱。如果有多個處理程序註冊,它們將始終按照它們綁定的順序執行。在所有處理程序執行完畢後,事件將沿着正常事件傳播路徑繼續。

1

​​函數(和其他與事件相關的函數)接受函數,該函數在事件觸發時將其放置在事件處理程序隊列中。

所以,要更直接地回答你的問題,是的。

0

讓我們剛纔談到它怎麼可能?

假設您有多個事件要在您的頁面完全加載時調用。讓我們來看看JavaScript以獲得更多關於這個概念的信息,並讓它簡單易懂。

var pageLoadEvents = []; 

我們已經創建了一個數組,其中我們將繼續我們的所有活動,我們希望加載頁面時調用。

pageLoadEvents.push(function() { 
    alert("hello!"); 
}) 

和:

pageLoadEvents.push(function() { 
    alert("How are you doing?"); 
}) 

現在,您已經定義了所有你想提高頁面加載和所有這些事件都是在一個pageLoadEvents陣列。在這裏,我們寫最後一段:

window.onload = function() { 
for(var index=0; index<pageLoadEvents.length; index++) { 
    pageLoadEvents[index](); 
} 
} 

,我們保持pageLoadEvents陣列中的所有活動將由一個被執行一個。

每次調用load$(window)保持它的內容時(如函數(E){..})你load在數組定義和最終執行他們每個人。