jQuery.trigger('click') 在 IE8 中导致 "change" 事件
jQuery.trigger('click') results in "change" Event in IE8
$('#myRadioButton').change(function(event) {
var eventType = event.type;
$(this).trigger('click'); // In IE8 only, this results in endless loop
});
上面的代码片段导致在 IE8 中触发更改事件,因此当我的单选按钮被选中时会启动无限循环。这不是预期的行为,因为 'click' 事件肯定不是 'change' 事件。在其他浏览器和 IE9+ 中,代码按预期工作(即,不是无限循环)。
在 IE8 中,变量 eventType
等于 "change"
,既用于初始的用户触发的 'change' 事件,也用于后续对其自身的调用。
这种行为的原因是什么?如何阻止 IE8 像普通浏览器一样运行?
此致!
原因 - 不知道抱歉。
'Work Around' :-
function radioChange() {
$(this).off('change', radioChange);
$(this).trigger('click');
$(this).on('change', radioChange);
}
$('#myRadioButton').change(radioChange);
trigger
是同步的,所以删除 change
,然后触发 click
,然后重新附加 change
应该可以。
$('#myRadioButton').change(function(event) {
var eventType = event.type;
$(this).trigger('click'); // In IE8 only, this results in endless loop
});
上面的代码片段导致在 IE8 中触发更改事件,因此当我的单选按钮被选中时会启动无限循环。这不是预期的行为,因为 'click' 事件肯定不是 'change' 事件。在其他浏览器和 IE9+ 中,代码按预期工作(即,不是无限循环)。
在 IE8 中,变量 eventType
等于 "change"
,既用于初始的用户触发的 'change' 事件,也用于后续对其自身的调用。
这种行为的原因是什么?如何阻止 IE8 像普通浏览器一样运行?
此致!
原因 - 不知道抱歉。
'Work Around' :-
function radioChange() {
$(this).off('change', radioChange);
$(this).trigger('click');
$(this).on('change', radioChange);
}
$('#myRadioButton').change(radioChange);
trigger
是同步的,所以删除 change
,然后触发 click
,然后重新附加 change
应该可以。