2016-08-11 158 views
3

我对这种方式提出了一些单击事件:事件。点击()打开和关闭

$(function() { 
    $('#button1').click(function() { 
     //do samething... 
    }); 

    $('#button2').click(function() { 
     //do samething... 
    }); 
    ..... 
}); 

在我的应用程序的不同部分,我想关闭的点击,后来接通他们再次:

我可以关掉点击调用这个函数:

function keysLock() { 
    $('#button1').off('click'); 
}; 

现在我不能恢复点击功能。我试着用类似

$('#button1').on('click') 

(和很多类似的东西),但它不起作用。

+1

是,'.off()'不轻弹光开关的意识把它关掉,它* *删除处理程序。如果你绑定了命名函数,那么你可以使用'$(“#button1”)。click(namedFunction)''重新绑定它们,或者你可以更新处理程序来标识它是否当前处于活动状态,然后在'keysLock )'只需将该标志设置为false即可。 @pmahomme - '.click()'不被弃用。它只是'.on()'的一个快捷方式 - 这里不是问题。 – nnnnnn

回答

3

只是基础上添加您的评论的替代解决方案,你可以使用一个变量来启用/禁用事件和你没有删除处理的话,这样的事情:

$(function() { 
    var someSpecificCondition = false; 

    function doThisStuffOnClick() { 
    if (someSpecificCondition) { 
     return; 
    } 
    // do something 
    } 

    $('#button1, #button2').click(doThisStuffOnClick);  
}); 
+0

好的,编辑,因为我错过了他们是一样的。使用'关闭'和自定义类似乎是矫枉过正。 –

+1

我认为OP没有比这两个人得到更好的答案,也没有在他所做的事情中显示更多的代码+洞察力。我甚至认为这可能是一个* XY问题*。 –

+1

我同意我们没有足够的信息。 –

3

... .on() ...... .off()所以是

Aassign点击自定义功能,如:

function doThisStuffOnClick() { 
    // do someshitng 
} 

不是使用他.on()方法:

$("#button1").on("click", doThisStuffOnClick); 

,而不是将其关闭:

$("#button1").off("click"); 

,而不是把它重新打开

$("#button1").on("click", doThisStuffOnClick); 


阅读总是更这里: .off()jQuery Docs

+0

您应该提及命名空间,因为它也可能是一个好主意。 –

+0

@IstvánUjj-Mészárosyep thx但是。不是现在。完全不需要'点击:fick'。让我们保留一段时间。 –

+0

当我们使用'off'来避免将来的问题时,我认为这总是一个好主意,因为'off'会删除所有'click'处理程序,而不是'doThisStuffOnClick'。 –