这个问题与我关于jQuery 1.4的last one有关。他们据说修复了导致更改处理程序无法在IE中工作的错误,但它并没有完全修复。
我正在尝试将实时更改处理程序绑定到select元素。大多数情况下,当我更改它时,事件处理程序会触发。但是如果我在页面加载后立即选中元素,然后尝试使用键盘更改值,然后选项卡远离它,事件不会在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>
答案 0 :(得分:2)
对于jQuery 1.4,修复程序在这里: http://github.com/jquery/jquery/commit/435772e29b4ac4ccfdefbc4045d43f714e153381
对于jQuery 1.4.1,修复程序在这里: http://github.com/jquery/jquery/commit/942f8f7f75a55a36e6b9745030d3b3c983518aa8
以下是错误讨论: http://dev.jquery.com/ticket/5851