[英]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.