0

我已经构建了一些函数,使用 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");
});

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

4

2 回答 2

2

看看对.one() jQuery您有帮助的功能。

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

或者

您可以使用.off();

Description: Remove an event handler.

EDIT

$('#available_clicks').on("click",'.available_click', function(ev)
{
   $("body").off("click", ".available_click");
});
于 2013-03-18T12:17:46.843 回答
0

You can also disable the button (this being the first statement in the function) and in the success of the ajax call, you can enable it again it.

于 2013-03-18T12:22:38.533 回答