0

在视图中,我有以下课程

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

在视图结束时,我启用了实时点击事件

$('.class').live("click", function() {
    window.orc.time.stopCount();
    window.orc.time.whenClicked(#{class.id}, #{class.time}, #    
{class.start});});

在咖啡脚本中,我具有以下功能

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 函数中,我需要禁用 live("click") 。如果我尝试

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

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

是否有解决方案在执行该功能之前禁用点击事件?

4

1 回答 1

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;
});
于 2012-09-26T14:25:57.490 回答