$('#div').on('mousedown', function(){ mousetimer.down(); }).on('mouseup', function(){ mousetimer.cancel(); }); var mousetimer = { timer: null, timing: false, down: function(){ if(!timing) { mousetimer.timing = true; mousetimer.timer = setTimeout(function(){ mousetimer.trigger(); }, 3000); } }, trigger: function(){ alert('do something'); mousetimer.cancel(); }, cancel: function(){ mousetimer.timing = false; clearTimeout(mousetimer.timer); } };
source share