2014-12-10 5 views
3

Допустим, у меня есть эта часть яваскрипта кода:Временно отключить все события

$('a').on('mouseenter', function() {console.log('you just hovered a link')}); 

И что иногда, я хочу, чтобы отключить все события, так как страница, например, загрузку. Я могу достичь этого через:

$(*).off(); 

Однако, как я могу повторно активировать все события при загрузке страницы?

+0

Вы можете заблокировать пользовательский интерфейс, используя, например, http://malsup.com/jquery/block/ –

+0

@ A.Wolff BlockUI мог быть большим, но когда вы unblockUI, событие MouseEnter будет запускаться, если вы находитесь в ссылке. – lepix

+0

Ya, это ожидаемое поведение, поэтому объясните вместо этого то, что вы ожидаете? –

ответ

3

можно скорее связать событие, когда документ будет готов:

$(function(){ 
    $('a').on('mouseenter', function() {console.log('you just hovered a link')}); 
}); 

и когда речь идет о других условиях, например, когда анимация работает. Вы можете установить некоторые переменные (скажем, isanimationruning) к истинным и проверить состояние переменной, чтобы определить, нужно ли парить, чтобы использовать или нет:

$('a').on('mouseenter', function() { 
if(!isanimationruning) 
    console.log('you just hovered a link') 
}); 
+0

Загрузка страницы была примером. Я могу представить, что вы также хотите отключить события во время анимации или выполнить запрос AJAX. – GolezTrol

+1

В любом случае загрузка страницы сильно отличается от того, что DOM готов –

0

http://jsfiddle.net/washington_guedes/rtonjcym/14/

$("button").on("click", function(){ 
    if($(this).val() === "0") 
     $(this).html("Click here to disable").val("1"); 
    else 
     $(this).html("Click here to enable").val("0"); 
}); 

$("#action").on("click", function(){ 
    if($("button").val() === "0") return; 

    // function implementation 
    $(this).css({"background-color": "#" 
     + Math.floor(Math.random() * 10) 
     + Math.floor(Math.random() * 10) 
     + Math.floor(Math.random() * 10)}); 

}); 

Я хранится в значении баттона: ноль или один ... и использовал этот код в следующих объектах:

.. function ..(){ 
    if($("button").val() === "0") return; 
    ... 
} .. 
+0

toggle (fn, fn) был удален из jQuery 1.9+ и в любом случае не отвечает на вопросы вообще –

1

Попробуйте использовать функцию отсоединения, если сможете. Проверьте пример для функции detach()