Esiste un modo elegante per sopprimere temporaneamente gli eventi jQuery? Io uso il codice come questo:Sospendi temporaneamente la gestione degli eventi jQuery
$(element).unbind(event, function1).unbind(event, function2);
// code for which the event is suppressed
$(element).bind(event, function1).bind(event, function2);
ma lo trovo un po 'goffo e non molto scalabile a molti eventi. Perché voglio sopprimere temporaneamente gli eventi? Uso il plug-in BlockUI per bloccare l'interfaccia utente durante l'accesso Ajax. Questo è fatto con: $(). AjaxStart ($. BlockUI) .ajaxStop ($ .unblockUI) come proposto da BlockUI.
Tuttavia, un accesso Ajax è speciale, quindi ho bisogno di un messaggio diverso. Gli eventi ajaxStart e ajaxStop interferiscono con il codice messaggio (non viene mostrato nulla):
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 se mi togliere il commento alla unbind() e bind) linee (, si sta lavorando.
Vuoi dire , impedendo il codice risultante da RUNNING? – nalply
Perché sì * modifica la risposta *, non è quello che ho detto? Mi sono fatto prendere dagli handler di eventi e da tutti i licenziamenti che ho fatto ho abusato della parola. – Eric
Nessun problema, hai modificato la risposta. Benvenuti in Stackoverflow. – nalply