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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top