在视图中我有以下课程
.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事件的解决方案,直到执行该功能?
答案 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;
});