0

谁能解释定义具有相同签名的事件处理程序的结果是什么,例如:

// 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 中的事件处理程序吗?

4

4 回答 4

1

结果将是所有附加的事件将按顺序执行。这通常用于在特定事件上执行多个功能。

在上述情况下,第一个1将登录到控制台,然后2,它们的应用顺序相同。

缺点是当您删除事件时change,附加到该事件的所有事件处理程序都将被删除(在您的情况下,两个处理程序都带有 console.log 语句)

您可以使用事件命名空间来克服这个问题。

于 2013-02-06T07:16:02.093 回答
1

JQuery 允许在一个元素上使用多个事件处理程序。这意味着它不会覆盖旧的。我不确定执行顺序,但它可能是随机的。

于 2013-02-06T07:16:13.190 回答
1

两个处理程序将随后运行。如果您命名处理程序,而不是使它们匿名,您可以独立地销毁它们(无需完全删除“更改”事件的所有处理程序)。

于 2013-02-06T07:13:30.930 回答
0

JQuery 使用绑定设置事件,这意味着添加到事件而不是替换事件进行替换,您必须先删除事件然后设置。

于 2013-02-06T07:16:35.633 回答