如何阻止第二次onClick事件触发?

时间:2013-03-18 12:16:46

标签: javascript jquery

我已经构建了一些函数,用jquery触发点击事件上的ajax事件,问题是,当你点击足够快时 - 事件会被触发两次,这不应该发生:)。我试图通过添加标志变量来避免这种情况,但是当你真的很快它就不起作用了。以下是我的功能示例:

action_flag = 0;

$('#available_clicks').delegate('.available_click', "click", function(ev)
{
    if(action_flag==1)
    { 
        ev.stopPropagation();
        return;
    }
    action_flag=1;
    somefunction();
});

在某些功能结束时是action_flag = 0指令。 你能为我提供一些解决方案,当用户点击足够快时,它可以防止双重触发吗? :)

修改

现在我这样做:

$('#available_clicks').delegate('.available_click', "click", function(ev)
{
   $("#available_clicks").on("click", ".available_click",somefunction())); 
   $("#available_clicks").off("click", ".available_click");
});

但是第二次点击后出现错误:/

2 个答案:

答案 0 :(得分:2)

查看有助于您的.one() jQuery功能。

  

说明:将处理程序附加到元素的事件。每个元素最多执行一次处理程序。

您可以使用.off();

  

说明:删除事件处理程序。

修改

$('#available_clicks').on("click",'.available_click', function(ev)
{
   $("body").off("click", ".available_click");
});

答案 1 :(得分:0)

你也可以禁用按钮(这是函数中的第一个语句),并且在ajax调用成功后,你可以再次启用它。