¿Existe alguna manera elegante de suprimir temporalmente los eventos de jQuery? Uso un código como este:Suprima el manejo de eventos de jQuery temporalmente
$(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? Uso el complemento BlockUI para bloquear la IU durante el acceso a Ajax. Esto se hace con: $(). AjaxStart ($. BlockUI) .ajaxStop ($. UnblockUI) según lo propuesto por BlockUI.
Sin embargo, un acceso 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();
});
}
Sólo si me elimine el comentario) líneas (unbind() y el enlace, se está trabajando.
Se refiere a , evitando que el código resultante se EJECUTE? – nalply
Por qué sí * edita la respuesta *, ¿no es eso lo que dije? Me quedé atrapado en los manejadores de eventos y todos los disparos que hacen que mal uso la palabra. – Eric
No hay problema, editó la respuesta. Bienvenido a Stackoverflow. – nalply