Gestion des événements jQuery Unclick () et des événements unsind ()?
-
02-07-2019 - |
Question
Je souhaite associer un événement click à un élément de bouton, puis le supprimer, mais je ne parviens pas à obtenir les événements unclick () ou unbind () pour fonctionner comme prévu. Dans le code ci-dessous, le bouton a la couleur 'tan' et l'événement click fonctionne.
window.onload = init;
function init() {
$("#startButton").css('background-color', 'beige').click(process_click);
$("#startButton").css('background-color', 'tan').unclick();
}
Comment puis-je supprimer des événements de mes éléments?
La solution
Il n’existe pas de unclick ()
. Où avez-vous eu cela?
Vous pouvez supprimer des gestionnaires d'événements individuels d'un élément en appelant unbind:
$("#startButton").unbind("click", process_click);
Si vous souhaitez supprimer tous les gestionnaires, ou si vous avez utilisé une fonction anonyme en tant que gestionnaire, vous pouvez omettre le deuxième argument de unbind ()
:
$("#startButton").unbind("click");
Autres conseils
Vous pouvez également créer une situation dans laquelle vous souhaitez dissocier la fonction de clic juste après son utilisation, comme je le devais:
$('#selector').click(function(event){
alert(1);
$(this).unbind(event);
});
unbind est votre ami.
$("#startButton").unbind('click')
Êtes-vous sûr de vouloir le dissocier? Et si plus tard vous voulez le lier encore et encore, et encore? Je n'aime pas la gestion dynamique des événements bind / unbind, car ils ont tendance à être hors de contrôle quand ils sont appelés à partir de différents points de votre code.
Vous pouvez envisager d'autres options:
- changez le bouton "désactivé" propriété
- implémentez votre logique dans " process_click " fonction
Seulement mes 2 centimes, pas une solution universelle.