【问题标题】:on click stopped by doubleclick单击时被双击停止
【发布时间】:2011-12-16 14:36:51
【问题描述】:

在 jQuery 中,我有一个在单击时执行的函数,但在双击时执行另一个函数,问题是当我双击它时,它会单击 2 次并双击,所以执行 3 次...

这是我的代码:

$('.listCat li').on({
    click: function() {
        $(this).toggleClass("on");
        refresh();
    },
    dblclick: function() {
        $('.listCat li.on').removeClass('on');
        $(this).addClass("on");
        refresh();
    }
});

我想在点击时做一个小的延迟,并检测是否有双击,否则启动 refresh()。

你有没有想到一个干净的方法来做到这一点?

谢谢。

【问题讨论】:

标签: jquery


【解决方案1】:

The docs for jQuery .dblclick建议不要一起使用:

不建议将处理程序绑定到同一元素的 click 和 dblclick 事件。触发的事件顺序因浏览器而异,有些在 dblclick 之前接收两个点击事件,而另一些只接收一个。双击灵敏度(检测为双击的两次单击之间的最长时间)可能因操作系统和浏览器而异,并且通常可由用户配置。

解决方法

如果您必须这样做,there is a workaround on this question(正如 pavan 在对您的问题的评论中提到的那样)。不过,我不会完全相信它。正如 jQuery 文档所说,双击的长度通常是用户可配置的。

另请参阅此问题:jQuery: Suppress `click` when `dblclick` is imminent?

【讨论】: