2011-09-28 64 views
3

如果我將一個元素中的幾個函數添加到同一事件,會發生什麼?相同元素和事件中的多個函數

例如:

jQuery('#searchButton').click(function(){ /* logic 1 */); 
jQuery('#searchButton').click(function(){ /* logic 2 */); 
  1. 總是第一個功能添加到事件將是第一個被稱爲?
  2. 所有瀏覽器都支持這種類型的東西?
  3. 函數被異步調用?

感謝

回答

6

只是想指出的東西,其他的答案尚未:jQuery的確實保證了活動將在它們被添加的順序被觸發(如引用在John Hartsock的答案中),通過綁定只有一個事件處理程序到任何給定的元素,並保持一個內部函數綁定數組(它具有額外的優勢,能夠刪除匿名函數,否則你不會有一個引用)。這對所有瀏覽器都適用。

但是,如果您將其與任何其他庫直接混合使用,則不能保證。該標準不要求實現遵循任何順序,因此雖然許多實現內部的FIFO結構並不能保證。 Relevant section of the standard

1

總是難免的元素事件的第一功能將首先被稱爲?從jQuery的文檔

如果有註冊多個處理程序,他們將永遠在它們被綁定的順序執行

報價。

參考

http://api.jquery.com/bind/

相關問題