0

我在 jQuery 中有这样的代码:

$("#something").click(function() {  
};

在函数内部,我想检查是否#something在短时间内仅单击一次,如果两次或更多,则像一次一样。

我试过这段代码:

if(!event.detail || event.detail == 1) { do_something; }

它适用于除 Firefox 之外的大多数浏览器。我知道为什么,但没有找到任何解决方案。我尝试preventDefaultdblclick事件,但它在 Chrome 中不起作用...

有任何想法吗?

4

4 回答 4

0

您可以使用event.timeStamp来确定两个事件之间的时间。

$("#something").click(function( event ) {  
    this.lastClick = this.lastClick || 0;

    if( event.timeStamp - this.lastClick > 200 ) {
        // do something
        alert('click');
    } else {
        // last click occured below 200ms, set out `lastClick` to the current timestamp
    }

    this.lastClick = event.timeStamp;
});

我这里有点草率,存储lastClick在 DOM 元素上的对象表示。您可能希望将该变量放在应用程序的更高范围内。

于 2013-03-15T12:26:56.310 回答
0

有流氓的方式来做到这一点。

有一个全局变量,

在 click 事件中,增加它。

$(this)当累积足够多的点击时,使用对象从元素中移除点击事件

于 2013-03-15T12:26:57.843 回答
0

我正在修改你的代码,

var counter =0;
$("#something").click(function() {  
counter++;
//alert("Clicked : " + counter);
};

我希望这是知道点击次数的最简单方法。

如果想控制点击,只需检查 if

if(counter >= 1) {...}

我认为这会做:)

于 2013-03-15T12:29:16.010 回答
-1

使用 .dblclick() (JQUERY) - 双击使用 .click() (JQUERY) - 单击

如果 1,2 次点击足以完成您的任务 - 使用它们。

祝你好运。

于 2013-03-15T12:40:00.963 回答