Comment vérifier si les boutons radio est déjà lié avec un gestionnaire d'événements « changement »
-
27-10-2019 - |
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" ?
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!
});