Gibt es eine elegante Möglichkeit, jQuery-Ereignisse vorübergehend zu unterdrücken? Ich benutze Code wie folgt:jQuery-Ereignisbehandlung vorübergehend unterdrücken
$(element).unbind(event, function1).unbind(event, function2);
// code for which the event is suppressed
$(element).bind(event, function1).bind(event, function2);
aber ich finde es ein wenig ungeschickt und nicht sehr skalierbar für viele Ereignisse. Warum möchte ich Ereignisse vorübergehend unterdrücken? Ich verwende das BlockUI-Plugin, um die Benutzeroberfläche während des Ajax-Zugriffs zu blockieren. Dies geschieht mit: $(). AjaxStart ($. BlockUI) .ajaxStop ($. UnblockUI) wie von BlockUI vorgeschlagen.
Allerdings ist ein Ajax-Zugriff speziell, deshalb brauche ich eine andere Nachricht. Die ajaxStart und ajaxStop Ereignisse stören den Nachrichtencode (nichts wird angezeigt):
function message(text, callback) {
if (text == undefined) {
$.unblockUI();
return;
}
// $().unbind('ajaxStop', $.unblockUI).unbind('ajaxStart', $.blockUI);
$("#message_text").html(text);
$.blockUI({message: $("#message")});
$("#message_ok").click(function() {
// $().bind('ajaxStop', $.unblockUI).bind('ajaxStart', $.blockUI);
$.unblockUI();
if (callback != undefined) callback();
});
}
Nur wenn ich die unbind Kommentar-() und die bind() Linien, es funktioniert.
Sie meinen , verhindert, dass der resultierende Code ausgeführt wird? – nalply
Warum ja * edits antwort *, habe ich das nicht gesagt? Ich habe mich in Ereignishandler und die ganze Brandstiftung verfangen, dass ich das Wort missbraucht habe. – Eric
Kein Problem, Sie haben die Antwort bearbeitet. Willkommen bei Stackoverflow. – nalply