Hay un error en jQuery 1.4.2 que hace que el evento change en select-element se active dos veces cuando se usa tanto evento DOM como evento jQuery, y esto solo en IE7/8. Aquí está el código de prueba:Problema de jQuery con evento de cambio e IE8
<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>
actualización: Otra vista del problema, de hecho este es el verdadero problema que tenemos con nuestra aplicación. Al vincular un evento de cambio en vivo en un selector que ni siquiera toca el elemento de selección con evento DOM, también se produce un doble disparo.
<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>
entradas a error real: http://dev.jquery.com/ticket/6593
Esto causa un montón de problemas para nosotros en nuestra causa aplicación que usamos ambos ASP.NET-eventos mezclados con jQuery y una vez que conectar un evento de cambio en cualquier elemento cada selección (menú desplegable) obtiene este problema de doble disparo.
¿Hay alguien que sepa una forma de evitar esto hasta que se resuelva este problema?
¿Necesita el caso de propagar? –
Desafortunadamente, si necesita un comportamiento de propagación, etc. No creo que sea posible, este es un error de núcleo 1.4.2/IE8 que necesitará una comprobación adicional en el núcleo de jQuery para solucionarlo. –
@Nick: ¿Qué quieres decir con propagate? Quiero que funcione como los otros navegadores, el evento solo dispara una vez. – Marcus