我正在寻找一种方法,只有在用户按下/点击按钮10秒钟后才执行按钮功能。
普通的按钮功能是:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
那么有没有办法从用户按下按钮并继续保持按压的时刻开始计算秒数(连续按压而不是点击或轻触),当秒数达到10时,函数将执行?
我正在寻找一种方法,只有在用户按下/点击按钮10秒钟后才执行按钮功能。
普通的按钮功能是:
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
那么有没有办法从用户按下按钮并继续保持按压的时刻开始计算秒数(连续按压而不是点击或轻触),当秒数达到10时,函数将执行?
您需要使用计时器,在鼠标按下时设置一个计时器,在鼠标释放时清除它。
$( "#target" ).on({
mousedown: function() {
$(this).data('timer', setTimeout(function() {
foo();
}, 10000));
},
mouseup: function() {
clearTimeout( $(this).data('timer') );
}
});
你需要使用mousedown和mouseup事件,而不是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");
})
https://github.com/vaidik/jquery-longpress
在函数执行之前,您可以设置延迟参数。
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>
你需要使用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;
});