如何检查事件是否被触发一次?

时间:2013-03-15 12:22:37

标签: javascript jquery dom

我在jQuery中有这样的代码:

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

和内部函数我想检查#something在短时间内是否只被点击过一次,如果是两次或更多次,那就行动一次。

我试过这段代码:

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

它适用于除Firefox以外的大多数浏览器。我知道为什么,但没有找到任何解决方案。我在preventDefault事件上尝试了dblclick,但它在Chrome中无效...

有什么想法吗?

4 个答案:

答案 0 :(得分: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元素对象表示中。您可能希望将该变量放在应用程序的更高范围内。

答案 1 :(得分:0)

这种做法很流行。

拥有一个全局变量,

在click事件中,递增它。

如果累积了足够的点击次数,请使用$(this)对象

从元素中删除click事件

答案 2 :(得分:0)

我正在修改你的代码,

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

我希望这是了解它点击次数的最简单方法。

如果想要控制点击次数,只需检查是否

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

我认为这样做:)

答案 3 :(得分:-1)

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

如果您的任务非常适合1,2次点击 - 请使用它们。

祝你好运。