如何检测Jquery中div的长按?

Ste*_*ffi 28 jquery triggers

我想在用户按下2 secondsdiv 时执行某些功能.

可能吗 ?

这是我的代码,用于检测div上的点击

$('div').mousedown(function() {

});
Run Code Online (Sandbox Code Playgroud)

use*_*654 33

添加一个仅允许在mousedown 2秒后发生点击的油门.

var timer;
$('div').on("mousedown",function(){
    timer = setTimeout(function(){
        alert("WORKY");
    },2*1000);
}).on("mouseup mouseleave",function(){
    clearTimeout(timer);
});
Run Code Online (Sandbox Code Playgroud)

编辑:我也添加了mouseleave,因为如果鼠标离开元素然后触发mouseup,它将不会停止计时器.


bul*_*ley 27

只需观察两者mousedownmouseup计算差异.这是一个例子.

(function() { 

    // how many milliseconds is a long press?
    var longpress = 3000;
    // holds the start time
    var start;

    jQuery( "#pressme" ).on( 'mousedown', function( e ) {
        start = new Date().getTime();
    } );

    jQuery( "#pressme" ).on( 'mouseleave', function( e ) {
        start = 0;
    } );

    jQuery( "#pressme" ).on( 'mouseup', function( e ) {
        if ( new Date().getTime() >= ( start + longpress )  ) {
           alert('long press!');   
        } else {
           alert('short press!');   
        }
    } );

}());
Run Code Online (Sandbox Code Playgroud)

  • Creadiff,注意立即调用的匿名函数包装器。这段代码没有全局泄漏。 (2认同)