Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何阻止第二次onClick事件触发?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何阻止第二次onClick事件触发?,javascript,jquery,Javascript,Jquery,我已经构建了一些函数,可以在jquery中单击事件时触发ajax事件,问题是,当您足够快地单击时,事件会被触发两次,这不应该发生:)。我试图通过添加flag变量来避免这种情况,但当您速度非常快时,它就不起作用了。以下是我的函数示例: action_flag = 0; $('#available_clicks').delegate('.available_click', "click", function(ev) { if(action_flag==1) { e

我已经构建了一些函数,可以在jquery中单击事件时触发ajax事件,问题是,当您足够快地单击时,事件会被触发两次,这不应该发生:)。我试图通过添加flag变量来避免这种情况,但当您速度非常快时,它就不起作用了。以下是我的函数示例:

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
函数

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

您可以使用
.off()

说明:删除事件处理程序

编辑

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

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

您发布的代码是完全同步的,不应该发生这种情况。99.8%的概率是您将代码片段过于简化,从而删除了错误代码。您的代码运行良好。看这个问题。。。不断删除和重新附加事件处理程序并不比自己处理好多少。如何附加.one()以委派?@pawel您需要将其用作
$(“#DOM”).one(“单击”,
@pawel代表您可以使用
.off
too@DipeshParmar谢谢,但我需要将事件委托到我的对象中,因为它们起初并不存在,我稍后将使用ajax加载它们。