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

时间:2012-09-26 14:21:50

标签: javascript jquery ruby-on-rails coffeescript

在视图中我有以下课程

.class{"data-id" => time.id}

在视图的末尾,我启用了实时点击事件

$('.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) ->
     ...

在whenClicked功能中,我需要禁用实时(“点击”)。如果我试试

$(".class").die("click") 

它可以工作,但是只有在刷新页面后才会重新启用click事件,而这不是我需要的。

是否有解除禁用click事件的解决方案,直到执行该功能?

1 个答案:

答案 0 :(得分:2)

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

var isBusy = false;

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