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

标签 javascript jquery

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

action_flag = 0;

$('#available_clicks').delegate('.available_click', "click", function(ev)
{
    if(action_flag==1)
    { 
        ev.stopPropagation();
        return;
    }
    action_flag=1;
    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: Attach a handler to an event for the elements. The handler is executed at most once per element.

您可以使用.off();

Description: Remove an event handler.

编辑

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

关于javascript - 如何阻止第二个 onClick 事件触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476657/

相关文章:

javascript - 内部 html 在 DOM 树中完全渲染后会触发哪个事件?

javascript - 计算 gif 重播次数

javascript - HTML5 checkValidity 和不可见字段

javascript - 使用 jQuery 动态加载脚本时,firebug 中没有换行符

javascript - 如何在不安装 npm 的情况下扩展 gulp 中的对象

javascript - Css 溢出隐藏所有内容。无法修改滚动条

javascript - 有没有办法使用 JS 变量作为输入而不是 jquery 选择器 "#id"?

javascript - datepicker和动态表不使用jQuery函数

jquery - 如何在乘法和除法中保持小数精度(在 jQuery、javascript 中)?

javascript - 根据类别从数据库中调用不同类型的问题