簡體   English   中英

Javascript / JQuery中的相同簽名事件處理程序

[英]Same signature event handlers in Javascript/JQuery

任何人都可以解釋定義具有相同簽名的事件處理程序的結果是什么,例如:

// event handler 1
$('form.custom select[data-customforms!=disabled]').on('change', function() { 
    console.log('1');
});

// event handler 2
$('form.custom select[data-customforms!=disabled]').on('change', function() { 
    console.log('2');
});

這是不好的做法嗎? 執行順序是什么? 是否有與此相關的瀏覽器特定行為? 可以擴展Javascript中的事件處理程序嗎?

這兩個處理程序將隨后運行。 如果為處理程序命名,而不是使它們成為匿名名稱,則可以獨立銷毀它們(無需完全刪除'change'事件的所有處理程序)。

結果將是所有附加事件將按順序執行。 通常用於在特定事件上執行多個功能。

在上述情況下,前1將登錄到控制台,然后2登錄,它們的應用順序相同。

缺點是,當您刪除change事件時,將刪除與該事件相關的所有事件處理程序(在您的情況下,兩個帶有console.log語句的處理程序)

您可以使用事件命名空間來解決此問題。

jQuery允許在一個元素上使用多個事件處理程序。 這意味着它將不會覆蓋較舊的版本。 我不確定執行順序,但可能是隨機的。

jQuery將綁定用於設置事件,這意味着添加到事件而不是替換事件以進行替換,您必須先刪除事件然后再設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM