Есть ли элегантный способ временно запретить события jQuery? Я использую такой код:Временно отключить обработку событий jQuery
$(element).unbind(event, function1).unbind(event, function2);
// code for which the event is suppressed
$(element).bind(event, function1).bind(event, function2);
, но я нахожу его немного неуклюжим и не очень масштабируемым для многих событий. Почему я хочу временно отключать события? Я использую плагин BlockUI для блокировки интерфейса во время доступа Ajax. Это делается с помощью: $(). AjaxStart ($. BlockUI) .ajaxStop ($. UnblockUI) как предложено BlockUI.
Однако один доступ Ajax является особенным, поэтому мне нужно другое сообщение. События ajaxStart и ajaxStop вмешиваться в код сообщения (ничего не отображается):
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();
});
}
Только если я раскомментировать отвязать() и привязку() линии, она работает.
Вы имеете в виду , предотвращая запуск кода из RUNNING? – nalply
Почему да * редактирует ответ *, разве это не то, что я сказал? Я все поймал в обработчиках событий и все, что они стреляли, что я неправильно использовал это слово. – Eric
Нет проблем, вы отредактировали ответ. Добро пожаловать в Stackoverflow. – nalply