2011-06-04 33 views

回答

31

比利的答案令人難以置信地完整,實際上在我使用它的幾次時效果很好。此外然而,你可能想看看在JQuery Mobile的VMOUSE插件,它是一個試圖抽象的鼠標事件:

// This plugin is an experiment for abstracting away the touch and mouse 
// events so that developers don't have to worry about which method of input 
// the device their document is loaded on supports. 

- https://github.com/jquery/jquery-mobile/blob/master/js/vmouse.js

我一直在玩這一個項目我正在努力工作,現在看起來非常敏感。要使用,像:

$('selector').bind('vclick', function() { ... 

$('selector').bind('vmousedown', function() { ... 
+0

Billy的答案很棒,但這種解決方案要容易得多。我已經整合了它。謝謝 – TaylorMac 2011-06-06 01:51:00

+1

J.T.的回答是正確的做法。如果您執行了其他操作,請重新考慮。 – naugtur 2011-06-06 08:22:01

+0

謝謝,這真的提高了我的應用程序的響應速度。 – Hendrik 2012-01-09 14:10:07

27

您可以在一個呼叫這樣的綁定多個事件:

$('selector').bind('click tap',function(){ ... }) 

這可能會在某些瀏覽器/手機,不過,這是罰款可能會使某些觸發點按操作的設備觸發兩次事件。

你可以做某種類型的設備/特徵檢測,並添加相應的處理程序只有這樣解決這個問題...

$('selector').bind(myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... }) 

此外,我認爲touchstartmousedown更好的活動來選擇。這是因爲觸摸之後,點擊事件不會觸發,直到延遲已經過去,因爲系統允許第二次觸摸的機會使其成爲雙擊或成爲輕掃手勢等等。 touchstart事件立即啓動,因爲mousedown也應該更具響應性。

+0

會的mousedown是爲移動設備上的「抽頭」作爲迴應?我寧願使用一個事件並且避免爲設備檢測做一個功能,畢竟我的移動佈局只依賴於分辨率 – TaylorMac 2011-06-04 09:20:57

+0

我會做一個函數來檢測它是否啓用觸摸,然後使用'touchstart'和'mousedown'。沒有必要詳細瞭解它是哪種設備。這可能是確保您獲得跨平臺響應速度最簡單的方法。檢測啓用觸摸的設備就像檢查是否定義了「觸摸」一樣簡單。所以像這樣:'(typeof Touch!==「undefined」)? 'touchstart':'mousedown'' – 2011-06-04 11:09:17

+0

「Touch」顯然沒有在所有移動設備上定義。例如,Android 2.3.4的瀏覽器。 – 2012-03-03 16:14:09

4

似乎jQuery的移動已經這不只是一個事件:

$(function(){ 
    $('selector').bind('vclick', function(e){ 
     alert('test');  
     return false; 
    }); 
}); 
10

我們開發了一個小的腳本來解決那個問題。只需將其包含在全局級別中,即可立即觸發您的點擊事件,而不會對延遲的事件造成任何問題。

https://github.com/cargomedia/jquery.touchToClick

+0

好東西,謝謝! – Haroldo 2012-10-23 08:41:18

+0

這對我所需要的非常適用。謝謝! – DropTheNerd 2013-02-07 16:52:02

1

您可以從jQuery的使用VMOUSE插件。這將解決點擊事件延遲300ms(僅限移動設備)以及觸發點擊事件和觸摸事件的情況。

要得到vmouse插件,請使用jQuery Mobile Download Builder。將它包括在jQuery之後,但在任何將取決於此插件的腳本之前。

相關事件vclick,基本使用方法如下:

$(".selector").on("vclick", function(event) { 
    // To execute 
}); 
+0

僅針對vmouse +1自定義構建!沒有一個jQuery移動的風扇,但是這4KB精縮版本是重量輕,準確地工作,因爲我需要的。 – abenrob 2014-06-25 04:29:02

+0

注意,V單擊也將捕獲右鍵點擊事件,所以你可能要檢測開發過程中保持自己的理智:。對(「V單擊」功能(E){警報(e.which)}); – user2449231 2014-06-25 18:47:12