2010-06-30 5 views
1

J'ai une page avec une case à cocher qui est définie sur cochée lorsque la page est chargée. Si/quand la case n'est pas cochée, je dois lancer une fonction. Le code suivant fonctionne correctement dans tous les navigateurs à l'exception de IE. Dans les versions 7 et 8 (n'ont même pas testé 6) cela fonctionne mais vous devez le décocher, le vérifier, puis le deuxième décocher il exécute la fonction. La documentation de jQuery indique: "A partir de jQuery 1.4, l'événement de changement est maintenant en bulles, et fonctionne de la même manière que tous les autres navigateurs, dans Internet Explorer" ... mais cela ne semble pas fonctionner. Des idées?jQuery 1.4 modification(), case à cocher et IE

Le code:

$('#checkbox').change(function() { 
    // do something 
}); 
+1

utilisez-vous 1.4.0, 1.4.1, ou 1.4.2? L'événement 'change' a eu un grand amour en 1.4.2 –

+0

@Nick Quel genre de * love * at-il obtenu? : P – alex

+0

@alex - Ce commit était le grand: http://github.com/jquery/jquery/commit/5267824aa36f0fcecb944a4daf0b99d6e01460fd mais il y a une demi-douzaine d'autres qui sont allés aux événements pour 1.4.2 aussi: http://github.com/jquery/jquery/commits/1.4.2/src/event.js –

Répondre

1

Mise à niveau vers jQuery 1.4.2 + pour résoudre ce problème. Le 1.4.2 release inclus several changes/fixes for events.

Cet événement change, change bouillonnement dans IE (grand pour beaucoup de gens), et beaucoup plus a été corrigé dans cette version, la mise à niveau va résoudre votre problème :)

1

Si vous voulez arrêter l'événement bouillonnant, utilisez

$('#checkbox').change(function(event) { 
    event.stopPropagation(); 
    // do something 
}); 

Peut-être que vous pourriez aussi faire quelque chose comme

if ($.browser.msie) { 
    $('#checkbox').click(function() { // assuming this will be fired for keyboard as well 

     $(this).change(); 
    }); 

}; 

Cette peut forcer le un événement.