jQuery 1.4.2中存在一个错误,当使用DOM事件和jQuery事件时,
SELEct-element上的change事件会被触发两次,这只在IE7 / 8上发生.
这是测试
代码:
@H_
607_3@<html>
<head>
<script src="
http://code.jquery.com/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery(".myDropDown").change(function()
{
}
);
}
);
</script>
</head>
<body>
<
SELEct class="myDropDown" onchange="alert('
Hello'
);">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</
SELEct>
</body>
</html>
更新:
问题的另一种观点,实际上这是@R_314_9616@程序的真正问题.在没有用DOM事件触及SELEct元素的选择器上绑定实时更改事件也会导致双击.
@H_
607_3@<html>
<head>
<script src="
http://code.jquery.com/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery(".some
SELEctThatDoe
snotExist").live("change",function()
{
}
);
}
);
</script>
</head>
<body>
<
SELEct class="myDropDown" onchange="alert('
Hello'
);">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</
SELEct>
</body>
</html>
实际错误的票:http://dev.jquery.com/ticket/6593
这在@R_314_9616@程序中给我们带来了很多麻烦,因为我们使用混合了jQuery的ASP.NET事件,并且一旦你在任何元素上挂起一个change事件,每个SELEct(下拉列表)都会遇到这个双重触发问题.
在这个问题得到解决之前,有没有人知道解决这个问题的方法?
我讨厌从死里复活这个问题,但是jquery最终修复了最近发布的1.7版本中的这个错误.