2010-08-25 15 views

Répondre

84

Vous pouvez appeler .unbind() sans paramètres pour ce faire:

$('p').unbind(); 

De the docs:

Dans le cas le plus simple, sans argument, .unbind() supprime tous les gestionnaires attachés à les éléments.

+1

Si 'p' contient des éléments enfants, cette instruction désolidarise-t-elle ceux qui les écoutent? – Vrishank

69

Comme de jQuery 1.7, off() et on() sont les procédés préférés pour lier et gestionnaires d'événements unbind.

Donc, pour enlever tous les gestionnaires d'un élément, utilisez ceci:

$('p').off(); 

ou pour les gestionnaires spécifiques:

$('p').off('click hover'); 

Et d'ajouter ou de gestionnaires d'événements se lient, vous pouvez utiliser

$('p').on('click hover', function(e){ 
    console.log('click or hover!'); 
}); 
+24

Si vous voulez _remove chaque liaison de votre page_, vous pouvez appeler '$ (document) .add ('*'). Off();'. – flu

+6

Ceci doit être mis à jour en tant que réponse actuelle. –

+0

$ (document) .add ('ID_OF_THE_ELEMENT'). Off(); m'a aidé .. merci @flu – Moitt

0

@jammypeach a raison sur & étant les méthodes acceptées à utiliser. Unbind finit parfois par créer des comportements étranges (par exemple, ne pas correctement déconnecter les événements correctement).

Pour UNBIND tous les éléments dans le corps, les trouver et pour chacun désactiver le gestionnaire de clic (ce qui était l'ancien unbind):

$("body").find("*").each(function() { 
    $(this).off("click"); 
}); 

Voir aussi comment enregistrer les événements que vous avez désactivé dans this stack overflow question.