我已經將jQuery實時點擊事件替換爲jQuery移動點擊事件來提高響應能力。jQuery mobile-對於每個現場點擊事件應該有一個等效的點擊事件?
我有一種感覺,這是一個壞主意兼容性的原因。
是否有必要同時具有這兩個事件,並且有什麼方法可以將它們寫入同一個函數?
如(「點擊」,「水龍頭」)
我已經將jQuery實時點擊事件替換爲jQuery移動點擊事件來提高響應能力。jQuery mobile-對於每個現場點擊事件應該有一個等效的點擊事件?
我有一種感覺,這是一個壞主意兼容性的原因。
是否有必要同時具有這兩個事件,並且有什麼方法可以將它們寫入同一個函數?
如(「點擊」,「水龍頭」)
比利的答案令人難以置信地完整,實際上在我使用它的幾次時效果很好。此外然而,你可能想看看在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() { ...
您可以在一個呼叫這樣的綁定多個事件:
$('selector').bind('click tap',function(){ ... })
這可能會在某些瀏覽器/手機,不過,這是罰款可能會使某些觸發點按操作的設備觸發兩次事件。
你可以做某種類型的設備/特徵檢測,並添加相應的處理程序只有這樣解決這個問題...
$('selector').bind(myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... })
此外,我認爲touchstart
和mousedown
更好的活動來選擇。這是因爲觸摸之後,點擊事件不會觸發,直到延遲已經過去,因爲系統允許第二次觸摸的機會使其成爲雙擊或成爲輕掃手勢等等。 touchstart
事件立即啓動,因爲mousedown
也應該更具響應性。
會的mousedown是爲移動設備上的「抽頭」作爲迴應?我寧願使用一個事件並且避免爲設備檢測做一個功能,畢竟我的移動佈局只依賴於分辨率 – TaylorMac 2011-06-04 09:20:57
我會做一個函數來檢測它是否啓用觸摸,然後使用'touchstart'和'mousedown'。沒有必要詳細瞭解它是哪種設備。這可能是確保您獲得跨平臺響應速度最簡單的方法。檢測啓用觸摸的設備就像檢查是否定義了「觸摸」一樣簡單。所以像這樣:'(typeof Touch!==「undefined」)? 'touchstart':'mousedown'' – 2011-06-04 11:09:17
「Touch」顯然沒有在所有移動設備上定義。例如,Android 2.3.4的瀏覽器。 – 2012-03-03 16:14:09
似乎jQuery的移動已經這不只是一個事件:
$(function(){
$('selector').bind('vclick', function(e){
alert('test');
return false;
});
});
我們開發了一個小的腳本來解決那個問題。只需將其包含在全局級別中,即可立即觸發您的點擊事件,而不會對延遲的事件造成任何問題。
好東西,謝謝! – Haroldo 2012-10-23 08:41:18
這對我所需要的非常適用。謝謝! – DropTheNerd 2013-02-07 16:52:02
您可以從jQuery的使用VMOUSE插件。這將解決點擊事件延遲300ms(僅限移動設備)以及觸發點擊事件和觸摸事件的情況。
要得到vmouse插件,請使用jQuery Mobile Download Builder。將它包括在jQuery之後,但在任何將取決於此插件的腳本之前。
相關事件vclick,基本使用方法如下:
$(".selector").on("vclick", function(event) {
// To execute
});
僅針對vmouse +1自定義構建!沒有一個jQuery移動的風扇,但是這4KB精縮版本是重量輕,準確地工作,因爲我需要的。 – abenrob 2014-06-25 04:29:02
注意,V單擊也將捕獲右鍵點擊事件,所以你可能要檢測開發過程中保持自己的理智:。對(「V單擊」功能(E){警報(e.which)}); – user2449231 2014-06-25 18:47:12
Billy的答案很棒,但這種解決方案要容易得多。我已經整合了它。謝謝 – TaylorMac 2011-06-06 01:51:00
J.T.的回答是正確的做法。如果您執行了其他操作,請重新考慮。 – naugtur 2011-06-06 08:22:01
謝謝,這真的提高了我的應用程序的響應速度。 – Hendrik 2012-01-09 14:10:07