如何阻止第二个onClick事件触发



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

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

在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");
});

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

看一看.one() jQuery的函数会对你有所帮助。

Description:为元素的事件附加一个处理程序。处理程序对每个元素最多执行一次。

可以使用.off();

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

编辑

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

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

最新更新