我只是在用户按下/点击按钮10秒钟时才试图找到执行按钮功能的方法。
正常的按钮功能是:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
所以有没有办法计算用户按下按钮和KEPT按下的时刻(连续按下而不点击不敲击),当秒数达到10时,该功能将执行?
答案 0 :(得分:5)
您需要定时器,在按住鼠标时设置定时器,在释放鼠标时将其清除。
$( "#target" ).on({
mousedown: function() {
$(this).data('timer', setTimeout(function() {
foo();
}, 60000));
},
mouseup: function() {
clearTimeout( $(this).data('timer') );
}
});
答案 1 :(得分:0)
你必须使用mousedown和mouse up而不是click事件,
var timeOut = 0;
$("#target").mousedown(function () {
clearTimeout(timeOut);
timeOut = setTimeout(function () {
console.log("Handler for .click() called.");
}, 10000);
});
$(document).mouseup(function () {
clearTimeout(timeOut);
console.log("stop");
})
<强> DEMO 强>
答案 2 :(得分:0)
jQuery LongPress插件将为您处理此问题。
https://github.com/vaidik/jquery-longpress
您可以在执行功能之前设置延迟参数。
答案 3 :(得分:0)
JS
var threshold = 10000, timeOne, timeTwo;
$('#t10').mousedown(function(){
timeOne = new Date();
}).mouseup(function(){
timeTwo = new Date();
if(timeTwo - timeOne >= threshold){
alert('Do what you want');
timeOne = 0;
}else{
console.log('Released early');
}
});
HTML
<button id="t10">XX</button>
小提琴 的 http://jsfiddle.net/5z94y2z5/ 强>
答案 4 :(得分:0)
您需要使用mousedown和mouseup事件
http://api.jquery.com/mousedown/ http://api.jquery.com/mouseup/
var pressedtensecondos = false;
var timer = null;
$( "#target" ).mousedown(function() {
timer = setTimeout(function() { pressedtensecondos = true; }, 10000);
});
$( "#target" ).mouseup(function() {
clearTimeout(timer);
if(pressedtensecondos)
alert('ten seconds');
pressedtensecondos = false;
});
&#13;