2013-01-24 32 views
1

我有一個小問題,有沒有任何選項來檢測點擊間隔併爲他們設置任何條件。例如,如果我在一秒鐘內逐個點擊,我可以做點什麼,如果我在0.5秒後再次點擊,我可以做點別的事情?我不知道如何寫這個,所以我不能在我的代碼中添加任何示例只有這個願景,我也無法在其他therds中找到這個解決方案,你能幫助我嗎?如何使用jQuery逐個檢測點擊間隔?

var clicks=0; 
function myClickFunction(event){ 
    clicks++; 
} 
$(function(){ 
    $("#something").on("click",myClickFunction); 
     if (click ==)){ 

     } 
    }); 
}); 

很多thx的答案!

+0

你問如何檢測雙擊? – JJJ

+0

不,我需要檢測第一次和第二次點擊之間的時間間隔,如果它是f.e. 1s做一些事情,如果它是0,5s做一些其他的事情 – Lukas

回答

1
var lastClickTime; 

function testTime(time){ 
    switch (true) { 
     case (time < 500): 
      alert("less than 500ms!"); 
      break; 
     case (time < 1000): 
      alert("less than 1000ms but not 500ms!"); 
      break; 
     default: 
      alert("you sure click slow!"); 
      break; 
    } 
} 

$("#something").on("click", function(e){ 
    e.preventDefault(); 
    var newTime = new Date(); 
    if(lastClickTime !== undefined) { 
     testTime(newTime - lastClickTime); 
    } 
    lastClickTime = newTime; 
}); 

這是一個快速的方法來做到這一點,但產生了一些全局。它應該把你放在正確的道路上!

交換機可能會幫助您跟蹤所需的所有不同情況。

+0

這是真棒並且工作完美,但我有一個問題,這不適用於第一次點擊:) – Lukas

+0

您可以在未定義的測試中添加一個else語句來捕獲第一次點擊。 – minikomi

+0

i'v再添加一些觸發器點擊:) thx再次尋求幫助 – Lukas

0

您可以嘗試綁定clickdblclick函數。見docs並觀看了這一點:

注:雖然在下面的例子證明,這是不可取的 綁定處理程序的點擊爲同一 元素DBLCLICK事件兩者。觸發事件的順序因瀏覽器而異,其中有一些在dblclick之前接收到兩個點擊事件,而另一些則只有一個發生在其他瀏覽器之外。雙擊靈敏度(雙擊檢測到的點擊次數爲 之間的最大時間)可能因操作系統和瀏覽器而異,並且通常是用戶可配置的。

Source

0

您必須手動跟蹤的最後一次點擊的時間。然後每次你的事件處理程序被調用時將當前時間與存儲的時間進行比較。

一些僞代碼:

last_click_time = 0 
onClick() { 
    if (last_click_time == 0) { 
    // first click 
    last_click_time = time.now(); 
    } else { 
    time_difference = time.now() - last_click_time; 
    if (time_difference == 0.5) { 
     // half a second since last click 
    } else if (time_difference == 1) { 
     // one second since last click 
    } 
    ... 
    last_click_time = time.now(); 
    } 
} 
0

如果想定時,你可以只檢查當前計算機上的毫秒的精確控制。

Link to fiddle

HTML:

<a id="asd">yo</a> 

的Javascript:

$("#asd").click(function(){ 
    var latest = $(this).data("time") || 0; 
    var now = +new Date(); 
    var diff = now-latest; 
    if(diff < 500) alert("That was faster than 0.5 seconds!"); 
    if(diff > 1000 && diff < 1500) alert("That was between 1.0 and 1.5 seconds."); 
    $(this).data("time",now); 
});