jQuery.trigger('click') 在 IE8 中导致“change”事件

jQuery.trigger('click') results in "change" Event in IE8

本文关键字:change 事件 trigger click jQuery IE8      更新时间:2023-09-26
$('#myRadioButton').change(function(event) {
    var eventType = event.type;
    $(this).trigger('click'); // In IE8 only, this results in endless loop
});

上面的代码片段导致在IE8中触发更改事件,因此在选择我的单选按钮时会启动无限循环。这不是预期的行为,因为"点击"事件当然不是"更改"事件。在其他浏览器和IE9+中,代码按预期工作(即,不是无限循环(。

变量 eventType 等于 IE8 中的 "change",既适用于用户触发的初始"更改"事件,也适用于后续对自身的调用。

这种行为的原因是什么,如何阻止IE8成为一个混蛋并像普通浏览器一样行事?

此致敬意!

原因 - 不知道对不起。

"解决方法" :-

function radioChange() {
    $(this).off('change', radioChange);
    $(this).trigger('click');
    $(this).on('change', radioChange);
}
$('#myRadioButton').change(radioChange);

trigger是同步的,因此删除change,然后触发click,然后重新连接change应该可以工作。