更改事件和IE8的jQuery问题

Mar*_*cus 5 asp.net jquery events

jQuery 1.4.2中存在一个错误,当使用DOM事件和jQuery事件时,select-element上的change事件会被触发两次,这只在IE7/8上发生.这是测试代码:

<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>
Run Code Online (Sandbox Code Playgroud)

更新:问题的另一种观点,实际上这是我们的应用程序的真正问题.在没有用DOM事件触及select元素的选择器上绑定实时更改事件也会导致双击.

<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(".someSelectThatDoesNotExist").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>
Run Code Online (Sandbox Code Playgroud)

实际错误的票证:http://dev.jquery.com/ticket/6593

这在我们的应用程序中给我们带来了很多麻烦,因为我们使用混合了jQuery的ASP.NET事件,并且一旦你在任何元素上挂起一个change事件,每个select(下拉列表)都会遇到这个双重触发问题.

在这个问题得到解决之前,有没有人知道解决这个问题的方法?

小智 2

我讨厌从死里提出这个问题,但 jquery 终于在最近发布的 1.7 版本中修复了这个错误。