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 应该可以。