为什么浏览器不一致地呈现顺序不正确的jQuery

Why do browsers inconsistently render incorrectly ordered jQuery?

本文关键字:顺序 不正确 jQuery 浏览器 不一致 为什么      更新时间:2023-09-26

上下文:

我最近执行了一个jQuery代码块,在该代码块中,我错误地在事件之前应用了定位在事件处理程序上的代码。该代码的目的是针对更改事件生成一个警告框。

观察结果:

在我这边,最新版本的FF、Chrome和IE中没有执行警报框。其他StackOverflow成员(通过实时聊天和另一个问题(向我证实,警报框在他们这边(在各种浏览器中(执行,而其他人则观察到警报框没有执行。

代码:

顺序错误的代码:

//Event handler
$('#b').val($('#a').val()).change();
//Event
$('#b').on('change', function() {
    alert("Change event fired on load.");
});

JSFiddle:http://jsfiddle.net/clarusdignus/rHYLM/

正确排序的代码:

//Event
$('#b').on('change', function() {
    alert("Change event fired on load.");
});
//Event handler
$('#b').val($('#a').val()).change();

JSFiddle:http://jsfiddle.net/clarusdignus/rHYLM/4/

我的问题:

为什么浏览器对于顺序不正确的事件处理程序和事件不一致地呈现不正确的jQuery?

根据w3标准,更改事件应按气泡顺序传播。除了IE<9也许这就是为什么在触发变更事件时存在不一致的原因。