Question

Si j'ai des boutons radio:

<input id="y0" type="radio" name="myRadioBtns" value="a" checked> <label for="y0"></label>
<input id="y1" type="radio" name="myRadioBtns" value="b">  <label for="y1"></label>
<input id="y2" type="radio" name="myRadioBtns" value="c">  <label for="y2"></label>

Les boutons radio peuvent avoir déjà lié un gestionnaire d'événements de changement comme suit:

$('input[name='myRadioBtns']').change(function() {
  //EVENT HANDLER
});

Je dois vérifier si les boutons radio ont déjà lié avec un gestionnaire d'événements « changement » ou non.

Ma question est Comment vérifier si les boutons radio est déjà lié avec un gestionnaire d'événements "changement" ?

Était-ce utile?

La solution

Si vous voulez tester si un événement de changement a déjà été lié avant de se lier les uns les autres, utilisez ceci:

var $el = $('input[name='myRadioBtns']');

if( ! ($el.data('events') && $el.data('events').change) ) {

   $el.change(function() {
       //EVENT HANDLER
   });
}

Autres conseils

Vous pouvez obtenir des événements liés à:

.data('events')

En outre, vous pouvez lier plusieurs événements que chaque changement des espaces de noms font des choses différentes. Par exemple, si vous écrivez un jQuery plug-in qui doit lier les événements aux éléments, mais pas supprimer tous les événements existants qui pourraient déjà être définies sur la page.

Chaque fois que j'écris un plug-in jQuery Je me assure que tous les événements sont liés comme ceci:

    $(":checkbox").on("change.myNamespace", function(){
        //Do Stuff - this won't replace existing change events on checkboxes!
    });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top