web-dev-qa-db-fra.com

comment dissocier tous les événements à l'aide de jquery

je peux utiliser ce code pour supprimer l'événement click,

$('p').unbind('click')

mais, a une méthode pour supprimer tous les événements?

a une méthode nommée unbindAll dans jquery?

merci

69
zjm1126

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

$('p').unbind();

De les docs :

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

92
Nick Craver

Depuis jQuery 1.7, off() et on() sont les méthodes préférées pour lier et dissocier les gestionnaires d'événements.

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

$('p').off();

ou pour des gestionnaires spécifiques:

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

Et pour ajouter ou lier des gestionnaires d'événements, vous pouvez utiliser

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

@jammypeach a raison de dire que l'on & off est la méthode acceptée à utiliser. La dissociation finit parfois par créer des comportements étranges (par exemple, ne dissocie pas réellement les événements correctement).

Pour dissocier tous les éléments du corps, trouvez-les tous et pour chacun, désactivez le gestionnaire de clic (quel était l'ancien détachement):

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

Voir également comment enregistrer les événements que vous avez désactivés dans cette question de débordement de pile .

1
Blue Raspberry