这个问题与我的last one有关关于 jQuery 1.4。他们据称修复了导致更改处理程序无法在 IE 中工作的错误,但尚未完全修复。
我正在尝试将实时更改处理程序绑定(bind)到选择元素。大多数时候,当我更改它时,事件处理程序会触发。但是,如果我在页面加载后立即按 Tab 键切换到该元素,然后尝试使用键盘更改值,然后按 Tab 键离开该元素,则该事件不会在 IE 中触发。仅当我第一次尝试更改该值时才会发生这种情况。我在 IE 6、7 和 8 中注意到了这一点。在我尝试过的任何其他浏览器中都没有发生这种情况。我确信这是 jQuery 中的一个错误。有谁知道解决这个问题的简单方法吗?
这是一个演示该错误的示例页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>jQuery live change handler test 2</title>
</head>
<body>
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<select id="test">
<option value="a">a
<option value="b">b
</select>
<script type="text/javascript">
$("#test").live("change", function() {
alert('hi');
});
</script>
</body></html>
最佳答案
对于 jQuery 1.4,修复如下: http://github.com/jquery/jquery/commit/435772e29b4ac4ccfdefbc4045d43f714e153381
对于 jQuery 1.4.1,修复如下: http://github.com/jquery/jquery/commit/942f8f7f75a55a36e6b9745030d3b3c983518aa8
关于javascript - jQuery 1.4.1 中的实时更改处理程序仍然并不总是适用于 IE 中的选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149624/