【发布时间】:2014-07-29 12:06:45
【问题描述】:
我注意到 Chrome 和 Firefox 中“点击”和“更改”事件的顺序不同。
请参阅此 JSFiddle,例如:http://jsfiddle.net/5jz2g/3/
JavaScript:
var el = $('foo');
var fn = function(e) {
console.log(e.type);
}
el.addEvent('change', fn);
el.addEvent('click', fn);
在 Chrome 中,此日志:
change
click
在 Firefox 中会记录:
click
change
事件的顺序有标准吗?哪个应该先开火? MDN 似乎没有提及这一点,我在 W3C 文档中也找不到关于此的内容。
【问题讨论】:
-
如果没有提到,我不会依赖它。模糊事件也是如此。作为旁注,您绝对不应该依赖一个侦听器在另一个侦听器之前被调用(当您为同一事件注册两个侦听器时,因为它被指定为未定义)stackoverflow.com/questions/2706109/…
-
至少和checkbox没关系,只需要监听change事件
-
如果您的架构设计依赖于这些事件顺序,那么您应该重新考虑该架构的 99%
-
@micnic “更改”事件有问题的原因是旧版本 Internet Explorer 的行为。在元素失去焦点之前,它们不会触发“更改”事件。
-
恕我直言,FF 做得对。类似于表单提交按钮的点击事件与表单提交事件的关系。
标签: javascript checkbox onclick dom-events onchange