$('#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成为混蛋并像普通浏览器那样行事?
祝你好运!
答案 0 :(得分:1)
原因 - 不小心抱歉。
'解决问题' : -
function radioChange() {
$(this).off('change', radioChange);
$(this).trigger('click');
$(this).on('change', radioChange);
}
$('#myRadioButton').change(radioChange);
trigger
是同步的,因此删除change
,然后触发click
,然后重新附加change
就可以了。