我已经建立了一些函数,用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调用成功后,您可以再次启用它。