在 IE9 之前的 IE 中,复选框 click
事件中的 event.stopPropagation()
似乎会阻止关联的 change
事件触发。
(以下代码位于jsFiddle中)
<input type="checkbox" value="Y" checked>Test
<div id="output">Logging...</div>
使用以下 jquery block ,更改事件在 IE8 及更早版本中不会触发,但在 IE9(和 Chrome)中会触发:
$(document).ready(function() {
$("input").click(function(event) {
event.stopPropagation();
$("#output").append("<pre>click</pre>");
});
$("input").change(function(event) {
$("#output").append("<pre>change</pre>");
});
});
Chrome 和 IE9 提供:
Logging...
change
click
change
click
change
click
而 IE8 及更早版本给出:
Logging...
click
click
click
但是,如果我进行特定的“IE9 之前”处理,那么一切都会按预期工作:
使用以下 jquery block :
$(document).ready(function() {
$("input").click(function(event) {
event.stopPropagation();
$("#output").append("<pre>click</pre>");
// fix event bubbling before IE9
if ($.browser.msie) {
if (parseInt($.browser.version, 10) < 9) {
$(this).trigger("change");
}
}
});
$("input").change(function(event) {
$("#output").append("<pre>change</pre>");
});
});
这是预期的行为吗?
最佳答案
这是一个well-known IE8 bug这与事件冒泡无关:仅当焦点离开复选框时,更改事件才会在复选框上触发。
关于javascript - 复选框单击事件中的 event.stopPropagation 是否会阻止 IE8 及更早版本中触发更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688222/