2009-10-02 8 views
3

Je liant un menu déroulantComment délier un événement

("#dropdownlist").change(function(){ 
    //Do stuff 
}); 

Le code ci-dessus est appelé plusieurs fois. Comment puis-je dissocier cet événement avant de le lier à chaque fois?

+0

Je ne suis pas sûr de ce que vous essayez d'obtenir de la question. Voulez-vous lier l'événement pour qu'il ne se produise qu'une seule fois? Ou simplement déconnecter l'événement après qu'il a été appelé à un moment donné de votre script? – hitautodestruct

Répondre

7

Vous pouvez utiliser one au lieu de se lier:

("#dropdownlist").one('change',function(){}); 
8

Vous pouvez utiliser la méthode unbind():

$('#dropdownlist').unbind('change'); 
2

Utilisation suivant la logique:

var f = function() { 

} 

$('#xx').bind('change', f); // for bind function f 
$('#xx').unbind('change', f); // for unbind unbind function f 
2

De plus prend en charge jQuery namespaces. Par exemple, supposons que vous ayez des gestionnaires de changement qui effectuent la validation et modifiez les gestionnaires qui facilitent le survol du texte.

Vous pouvez enregistrer:

$("#foo").bind("change.validation", doValidation()); 

et

$("#foo").bind("change.helptext", toggleHelptext()); 

et vous pouvez délie un ensemble spécifique avant d'ajouter à nouveau la validation, par exemple

$("#foo").unbind("change.validation"); 
$("#foo").bind("change.validation", doValidation()); 

HTH Alex

Questions connexes