Unterdrückt die Behandlung von jQuery-Ereignissen vorübergehend

Gibt es eine elegante Möglichkeit, jQuery-Ereignisse vorübergehend zu unterdrücken? Ich benutze Code wie folgt:

$(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 bisschen 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.

Ein Ajax-Zugriff ist jedoch etwas Besonderes, daher benötige ich eine andere Nachricht. Die Ereignisse ajaxStart und ajaxStop stören den Nachrichtencode (es wird nichts 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 Zeilen unbind () und bind () auskommentiere, funktioniert es.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage