javascript - 复选框的单击和更改事件顺序是否有标准?

标签 javascript checkbox onclick dom-events onchange

我注意到 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 文档中找不到关于此的内容。

最佳答案

DOM3 事件文档有一个 recommendation关于事件顺序。根据它,如果是复选框,正确的顺序将是 click然后 change反之亦然,因为 change事件显然是复选框默认操作的一部分,请参阅 Example 5fiddle ,它在 FF 中按预期工作,但在 Chrome 中没有。无论如何,这是合乎逻辑的。但!让我们仔细阅读默认操作部分:

Default actions should be performed after the event dispatch has been completed, but in exceptional cases may also be performed immediately before the event is dispatched.



你看见了吗? W3C 在一句话中使用了 RFC 的 SHOULD 和 MAY 两个词!没什么可做的,他们是谨慎的人。 IMO,这就是为什么我们拥有我们所拥有的:)

关于javascript - 复选框的单击和更改事件顺序是否有标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014911/

相关文章:

javascript - 不同域中两个应用程序的浏览器之间的通信

javascript - 在绝对定位的 div 之上垂直居中 div

javascript - 使用一个复选框显示/隐藏全部或切换多个 div

html - 如何使 HTML 复选框看起来像纸质表单复选框?

javascript - 选中状态上的复选框更改标题文本

javascript - 弹出窗口正常工作,但主页也发生了变化

javascript - 在可拖动的 div 中设置正确的位置

javascript - 视频播放器错误未捕获在 promise DOMException 中

jquery - 在 onClick 中使用 JQuery

javascript - 通过 JQuery 将 img 的位置动态更改为鼠标位置