2010-08-25 27 views

risposta

84

È possibile chiamare .unbind() senza parametri per fare questo:

$('p').unbind(); 

Da the docs:

Nel caso più semplice, senza argomenti, .unbind() rimuove tutti i gestori collegati al gli elementi.

+1

Se "p" ha alcuni elementi figli, questa affermazione non accetterà nemmeno gli ascoltatori su quelli? – Vrishank

69

Al jQuery 1.7, off() e on() sono i metodi preferiti per legare e gestori di eventi unbind.

Quindi, per rimuovere tutti i gestori da un elemento, utilizzare questo:

$('p').off(); 

o per i gestori specifici:

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

E per aggiungere o gestori di eventi bind, è possibile utilizzare

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

Se si desidera _remove ogni binding dalla propria pagina_ è possibile chiamare '$ (document) .add ('*'). Off();'. – flu

+6

Questo deve essere aggiornato come risposta corrente. –

+0

$ (documento) .add ('ID_OF_THE_ELEMENT'). Off(); mi ha aiutato .. grazie @flu – Moitt

0

@jammypeach è giusto su & di essere i metodi accettati da utilizzare. Unbind a volte finisce per creare comportamenti strani (ad esempio, non effettivamente gli eventi non vincolanti).

Per separare tutti gli elementi all'interno del corpo, trovare tutti e per ciascuno spegnere il gestore di clic (quello che era il vecchio unbind):

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

vedere anche come salvare gli eventi che si abbia disattivato in this stack overflow question.

Problemi correlati