jQuery.trigger('click')导致IE8中的“更改”事件

时间:2015-11-04 22:14:46

标签: javascript jquery internet-explorer-8 event-handling

$('#myRadioButton').change(function(event) {
    var eventType = event.type;
    $(this).trigger('click'); // In IE8 only, this results in endless loop
});

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

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

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

祝你好运!

1 个答案:

答案 0 :(得分:1)

原因 - 不小心抱歉。

'解决问题' : -

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

$('#myRadioButton').change(radioChange);

trigger是同步的,因此删除change,然后触发click,然后重新附加change就可以了。