我有一个选择,其上有一个更改事件,显示一个确认框。如果用户单击“取消”,则我将值更改回之前的值(使用.val())。但是,在IE8中,这会再次触发更改事件,重新启动循环。
必须有一种更简洁的方法将选择设置回它之前的值,而不会触发另一个更改事件,但我想不出来:/任何建议?这就是我现在正在做的事情,这可能是相当笨拙的:
$("#quiz_style").change(function(){
var selected = $(this).val();
if(selected == "classic"){
if (!confirm("confirmation message for changing to classic")) {
$(this).val('sequential');
return false;
}
} else if(selected == "sequential"){
if (!confirm("confirmation message for changing to sequential")) {
$(this).val('classic');
return false;
}
}
});
编辑 - 了解更多信息。我的原帖有点误导,因为它说使用val()会触发另一个更改事件。我认为这并不完全正确:所发生的是选择被更改回来,没有发生任何不幸事件,但是当我点击页面上的其他地方(任何地方)时,会再次触发更改事件。
答案 0 :(得分:0)
它不应该这样做,它似乎不是:http://jsbin.com/omewa6在IE8(以及IE6,Chrome和Firefox,以及Opera ......)中测试过。你会想在代码中的其他地方查找问题,虽然我不能立即想到如果那个代码是你实际使用的代码会是什么......