Javascript 如何阻止第二次onClick事件触发?
我已经构建了一些函数,可以在jquery中单击事件时触发ajax事件,问题是,当您足够快地单击时,事件会被触发两次,这不应该发生:)。我试图通过添加flag变量来避免这种情况,但当您速度非常快时,它就不起作用了。以下是我的函数示例: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
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加载它们。