暂时禁用所有事件

时间:2014-12-10 11:32:07

标签: javascript jquery

假设我有这部分javascript代码:

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

有时,我想禁用所有事件,因为页面是例如加载。我可以通过以下方式实现这一目标:

$(*).off();

但是,如何在页面加载完成后重新启用所有事件?

3 个答案:

答案 0 :(得分:3)

您可以在文档准备就绪时绑定事件:

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

当涉及到其他条件时,例如动画正在运行时。你可以将一些变量(比如isanimationruning)设置为true并检查变量状态以确定是否需要使用悬停:

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

答案 1 :(得分:1)

如果可以,请尝试使用分离功能。 查看函数detach()

的示例

答案 2 :(得分: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;
  ...
} ..