Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在当前方法上禁用实时事件_Javascript_Jquery_Ruby On Rails_Coffeescript - Fatal编程技术网

Javascript 在当前方法上禁用实时事件

Javascript 在当前方法上禁用实时事件,javascript,jquery,ruby-on-rails,coffeescript,Javascript,Jquery,Ruby On Rails,Coffeescript,在视图中,我有以下类 .class{"data-id" => time.id} 在视图的末尾,我启用了live click事件 $('.class').live("click", function() { window.orc.time.stopCount(); window.orc.time.whenClicked(#{class.id}, #{class.time}, # {class.start});}); 在coffeescript中,我有以下功能 ti

在视图中,我有以下类

.class{"data-id" => time.id}
在视图的末尾,我启用了live click事件

$('.class').live("click", function() {
    window.orc.time.stopCount();
    window.orc.time.whenClicked(#{class.id}, #{class.time}, #    
{class.start});});
在coffeescript中,我有以下功能

time.whenClicked = (class.id, time_dur, time_start) -> 
   ct = time_entries.to_time(time_dur, time_start)
   $("div[data-id=#{time_id}]").addClass "ajax"
   $("div[data-id=#{time_id}]").html("<input id=\"editbox\" size=\"8\" type=\"text\" value=\"#{ct}\">") 
   $("#editbox").bind "keyup", (event) ->
     ...
它可以工作,但是单击事件只有在我刷新页面后才会重新启用,这不是我需要的


是否有一种在函数执行之前禁用单击事件的解决方案

不要禁用处理程序。只需实现一个布尔标志,就可以知道该方法是否已经在运行。在这种情况下,您可以立即从处理程序返回:

var isBusy = false;

$('.class').live('click', function(){
    if(isBusy) return;
    isBusy = true;
    window.orc.time.stopCount();
    window.orc.time.whenClicked(/* some params */);
    isBusy = false;
});
var isBusy = false;

$('.class').live('click', function(){
    if(isBusy) return;
    isBusy = true;
    window.orc.time.stopCount();
    window.orc.time.whenClicked(/* some params */);
    isBusy = false;
});