Manipuler les checkbox avec jQuery sous IE
Très récemment, IE m’a posé un léger problème avec sa gestion bien lourdingue des événements, et notamment le change.
J’ai eu besoin d’utiliser les événements sur des checkbox pour réaliser des filtres d’affichage pour Google Maps.
Pour faire simple, voici un bout de code qui fonctionnait parfaitement sur tous les navigateurs (sauf IE, bien entendu …) :
$('input[type=checkbox]').change(filtrer);
« filtrer » étant ma fonction de filtrage des points sur la carte.
Malheureusement, IE (6,7 et 8 ) avait du mal à réagir à cet événement.
Du coup, j’ai du l’y forcer :
$('input[type=checkbox]').click(function(e){
if($.browser.msie){
$(this).change();
}
});
Ainsi, je force IE à provoquer l’événement et ma fonction « filtrer » est bien appelée
En bonus, voici comment cocher et décocher des checkbox avec jQuery :
$('input[type=checkbox]').attr('checked','checked');//cochage
$('input[type=checkbox]').attr('checked','');//décochage
à modifier selon votre page et donc vos sélecteurs
Bonsoir,
Ben moi j’ai tout essayé avec mon bout code, IE 8 veut rien savoir et ça commence à me faire bouillir:
$(« input[name='photos']« ).change(function(){
if($(this).is(‘:checked’)){$(‘div#photos’).toggleClass(‘cache_me’);}
else{$(‘div#photos’).toggleClass(‘cache_me’);}
});
Bonjour,
D’abord, es-tu sûre que ton évènement « change » est bien déclenché ? (un p’tit alert juste après te permettra d’en être sûre).
Ensuite, je ne sais pas si le toggleClass() est la solution la plus propre. Perso, je serai passé par addClass et removeClass pour être certain de ce que fait mon script.
As-tu une version en ligne de ta page, où je puisse jeter un oeil ?
Bien en faites, j’ai tout essayé que, le ToggleClass est l’équivalent du AddClass, removeClass et ça ne change en rien le comportement de IE même si on remplace par click.
IE c’est comme windows fuez-le ya des navigateurs bien mieux comme FireFox, Opera, Chrome.
Vérifiez que vous n’ayez pas un erreur ailleurs… (oubli de déclaration d’une variable,etc …)
Si IE rencontre une erreur JS en cours de page, cela peut empêcher le fonctionnement d’autres JS sur cette même page…
Je viens de faire des tests.
http://jsfiddle.net/PyLYg/
Le toggle ou les addClass, removeClass ne sont aprioris pas adaptés à toutes les situations et le comportement est assez différent d’un browser à l’autre.
Là j’ai résolu le problème, mais comme vous le dite, IE serait réfractaire à d’autre erreur notamment de script tiers…. Donc je vais vérifier de se coter là car j’ai une piste avec le Debuguer d’IE.
J’ai effectivement erreur dans IE à cause d’un script tiers dont j’ai signalé le problème.
Merci encore
Ravi d’avoir pu vous aider