1

Ich benutze jQuery 1.10.2, möchte aber auch die Lösung für die modernste Version kennen, wenn sie nicht die gleiche ist.Wird jQuery einen Fehler ausgeben, wenn off für nicht definiertes Ereignis verwendet wird?

Ich habe eine Javascript-Datei, die einige benutzerdefinierte Ereignisse hinzufügen und entfernen wird.

$(window).on('clicked_button', function(event) { 
    // Do stuff 
}); 

if (someCriteria) { 
    $(window).off('clicked_button'); 
} 

if (otherCriteria) { 
    $(window).trigger('clicked_button'); 
} 

Ich weiß, dass Sie, wenn das Ereignis bereits gebunden ist, kann loop through the events Objekt in der Daten zu überprüfen oder nicht, aber das nötig? Es ist mir egal, ob das Ereignis bereits gebunden ist oder nicht, ich möchte nur sicherstellen, dass es nicht gebunden wird, nachdem someCriteria erfüllt ist.

Wenn ich in der js-Konsole in Firefox ausführen, wird nur das Fensterobjekt zurückgegeben. Kann ich dann annehmen, dass die off() Funktion keinen Fehler wirft, wenn das Ereignis nicht bereits gebunden ist? Ich würde es vorziehen, einfach off() zu verwenden und es im Stillen fehlschlagen zu lassen, als die gebundenen Ereignisse durchlaufen zu müssen, bevor sie getrennt werden.

Ich müsste dies für die modernen Browser und IE 9+ arbeiten.

Antwort

2

Gemäß der jQuery-API-Dokumentation wurde off() in Version 1.7 hinzugefügt. $(window).off('clicked_button') schlägt automatisch fehl, auch wenn das benutzerdefinierte Ereignis 'clicked_button' nie an ein Element gebunden war.

Auf ähnliche Weise werden durch Aufruf von $(window).off() alle Ereignishandler ohne Fehler entfernt, auch wenn keine gebunden wurden.

+0

Vielen Dank. Ich konnte in den Dokumenten nicht finden, wo es ausdrücklich sagte, dass es einen Fehler werfen würde oder nicht. – GreeKatrina

Verwandte Themen