以下是重現此問題的最簡單代碼。 (在我的現實世界的例子,我重置複選框,如果存在與Ajax調用錯誤。)當用戶單擊屏幕上的任何位置時,IE會觸發複選框的更改事件
<html>
<script src="http://code.jquery.com/jquery-1.4.2.js"></script>
<script>
$(document).ready(function(){
$('#ckbx').change(function(e){
alert('fired.');
this.checked = !this.checked;
})
});
</script>
<form>
<input id="ckbx" type="checkbox"></input>
</form>
</html>
在IE9中,當我點擊複選框,則顯示警報。然後,如果我等待任何時間,然後點擊頁面上的其他任何地方,它會再次觸發該事件。
如果我刪除this.checked = !this.checked
問題就消失了。
任何人都可以解釋這一點嗎?或者提供一種解決這個問題的方法?
更新: 我正在使用jquery 1.4.2;在jquery 1.6中這不是一個問題。但是,我們接近發佈,並且我們不願意更改jquery的版本。
的jQuery已經更新了IE9。既然你發現了一個特定於IE9的舊jQuery bug,並在jQuery 1.6中修復了這個bug,我不確定你想從我們這裏得到什麼。 – Sparky
即使使用jQuery 1.6.2,它也可以在IE7中完成,所以我不認爲這是相關的。 – Pointy
'Khm'!.....我聽說過'IE'嗎? :) –