Ich kann diesen Code verwenden, um Klickereignis zu entfernen.
$('p').unbind('click')
Aber gibt es eine Methode, um alle Ereignisse zu entfernen?
hat eine Methode unbindAll
in jquery benannt?
Vielen Dank
Antworten:
Sie können dazu .unbind()
ohne Parameter aufrufen :
$('p').unbind();
Aus den Dokumenten :
Im einfachsten Fall werden ohne Argumente
.unbind()
alle an die Elemente angehängten Handler entfernt.
Ab jQuery 1.7 off()
und on()
sind die bevorzugten Methoden zum Binden und Aufheben der Bindung von Ereignishandlern.
Verwenden Sie Folgendes, um alle Handler aus einem Element zu entfernen:
$('p').off();
oder für bestimmte Handler:
$('p').off('click hover');
Zum Hinzufügen oder Binden von Ereignishandlern können Sie verwenden
$('p').on('click hover', function(e){
console.log('click or hover!');
});
$(document).add('*').off();
.
$('#ELEMENT_ID').off()
stattdessen direkt hätten verwenden können.
$(document).add(...)
Teil gesprochen. Sie benötigen das Dokument nicht in Ihrer Knotenliste. Wenn Sie einfach alle Ereignisse für ein bestimmtes Element entfernen möchten, dessen ID Sie kennen, können Sie diese $('#ELEMENT_ID').off()
sofort verwenden (nichts davor hinzugefügt).
@jammypeach hat Recht damit, dass Ein und Aus die akzeptierten Methoden sind. Das Aufheben der Bindung führt manchmal zu seltsamen Verhaltensweisen (z. B. das Entbinden von Ereignissen nicht richtig).
Um alle Elemente im Körper zu lösen, suchen Sie sie alle und schalten Sie für jedes Element den Klick-Handler aus (was war die alte Entbindung):
$("body").find("*").each(function() {
$(this).off("click");
});
In dieser Frage zum Stapelüberlauf erfahren Sie auch, wie Sie die Ereignisse speichern, die Sie deaktiviert haben .
So entfernen Sie alle Ereignisbindungen von allen Elementen, einschließlich der Dokumentverwendung:
$(document).off().find("*").off();
.unbind()
veraltet ist.