2013-05-05 60 views
-5

我想在用戶按住按鈕'x'秒後調用一個函數。請幫忙。如何在'X'秒onmousedown事件後調用函數

+3

顯示沒有試圖/努力/研究。 – 2013-05-05 05:25:59

+0

在發佈問題之前,最好做一些搜索並嘗試自己寫一些。無論如何,你可以試試這個鏈接:http://stackoverflow.com/questions/9371280/how-to-fire-an-event-after-n-seconds-of-maintained-click-jquery-javascript – 2013-05-05 05:36:45

+0

谷歌是你的最佳指南。 – Sid 2013-05-05 05:42:12

回答

1

調用setTimeout()以在3000毫秒後執行您的操作,將標識符從setTimeout()存儲到函數上方的變量中。在元素的mouseup()上,如果它通過clearTimeout()存在,清除超時。

var divMouseDown; 
$('#div-id').mousedown(function() { 
divMouseDown = setTimeout(function() { 
// Do timeout action... 
}, 3000); 
}); 
$('#div-id').mouseup(function() { 
if (divMouseDown) { 
clearTimeout(divMouseDown); 
} 
}); 
2
(function() { 
function someFunction() 
{ 
    alert("do something"); 
} 

var x = 2000; // 2000 miliseconds = 2 seconds 
var mousePressed = false; 
var timePressed = 0; 
var timeHolding = 0; 

function check(){ 
    timeHolding = new Date().getTime() - timePressed;   
    if(timeHolding >= x){ 
     someFunction(); 
    } 
}  
window.addEventListener('mousedown', function() {   
    if(!mousePressed){ 
     mousePressed = true; 
     timePressed = new Date().getTime(); // or Date.now()   
     setTimeout(function(){ check() }, x); 
    } 
}, false); 

window.addEventListener('mouseup', function() {   
    mousePressed = false;   
    timePressed = new Date().getTime(); 
}, false); 
})(); 

檢查工作here

+0

答案的第一個版本在按下後2秒鐘執行一些函數。這個新版本只有在按住按鈕2秒後才能執行該功能。 – 2013-05-05 06:04:33

0
$('div.target').primarydown(function() { 
    released = false; 
    $(this).primaryup(function() { 
     released = true; 
    }); 
    setTimeout(function() { 
     if(released) return; 
     else { 
     // call required function 
     } 
    }, 1000 /* timeout */); 
});