Suprimir el manejo de eventos jQuery temporalmente
¿Hay una manera elegante de suprimir temporalmente los eventos de jQuery? Yo uso código como este:
$(element).unbind(event, function1).unbind(event, function2);
// code for which the event is suppressed
$(element).bind(event, function1).bind(event, function2);
pero me parece un poco torpe y no muy escalable para muchos eventos. ¿Por qué quiero suprimir eventos temporalmente? Utilizo el plugin BlockUI para bloquear la interfaz de usuario durante el acceso Ajax. Esto se hace con:$ (). ajaxStart ($. blockUI) .ajaxStop ($. unblockUI) según lo propuesto por BlockUI.
Sin embargo, un acceso a Ajax es especial, por lo que necesito un mensaje diferente. Los eventos ajaxStart y ajaxStop interfieren con el código del mensaje (no se muestra nada):
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();
});
}
Solo si elimino el comentario de las líneas unbind () y bind (), está funcionando.