2012-02-16 56 views
9

我正在嘗試使用jQuery移動事件,而不使用jQuery移動的其餘部分。擴展jQuery的.on()以使用移動觸摸事件

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

這片段啓用所有這些,和工作正常,但不與。對()事件處理程序。例如:

$('a').on('tap',function(){ 
    console.log('Hi there!'); 
}); 

然而,它可以處理.live(),但現在已折舊。

所以我的問題;是否有擴展.on()功能以包含輕擊事件和其他事件的方法?下面名單:

  • touchstart
  • touchmove
  • touchend
  • orientationchange
  • 自來水
  • taphold
  • 刷卡
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

謝謝:)

+0

'on()'的選擇器需要成爲一個父...閱讀on()的幫助非常簡單... – ManseUK 2012-02-16 12:33:42

+0

很酷的提取,但它是如何最新?想想11個月大的時候,這個時候已經很老了,有人維護這個文件嗎? – rball 2012-04-13 16:01:53

回答

9

然而,它確實與.live()工作,但現在折舊。

因此,我認爲您要使用事件委託來保留替換元素上的這些事件。這將意味着,這樣的:

$('a').on('tap',function() { 
    console.log('Hi there!'); 
}); 

需要改變的東西,如:

$(document).on('tap', 'a', function() { 
    console.log('Hi there!'); 
}); 

,以便它的行爲一樣$("a").live("tap", ...

+1

我知道這將是基本的,盯着我的屏幕也許太久了!非常感謝:) – will 2012-02-16 12:37:40

+1

爲什麼不能在一個元素上使用'on'函數,就像在第一個代碼段中一樣?我只想將處理程序僅限於某些元素,而不是整個文檔。 – 2013-04-10 12:40:14

+0

@MisterSmith同意了。 – Swordfish0321 2013-06-07 15:32:11

0

也許應該更好地延長適用於手機和桌面的JQuery事件代碼。

一種方法是使用JQuery vmouse(虛擬鼠標)插件。

從VMOUSE插件評論:

//這個插件是抽象掉了手感,鼠標的實驗
//事件,使開發人員不必擔心其輸入
的方法//他們的文檔被加載到支持的設備上。
//
//這裏的想法是讓開發者註冊聽衆爲
//基本的鼠標事件,如鼠標按下,鼠標移動,鼠標鬆開,然後單擊,
//和插件會照顧註冊正確的聽衆
//幕後,在最快的時間
//爲該設備調用監聽器,同時仍保留事件的
//傳統的鼠標射擊環境的順序,應該多處理機在不同事件的相同元素上註冊
//。
//
//當前版本公開以下虛擬事件jQuery的綁定方法:
// 「vmouseover vmousedown vmousemove vmouseup V單擊vmouseout vmousecancel」

爲了更好的說明,請參見https://coderwall.com/p/bdxjzg

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

也看到有關的(觸摸)事件的當前狀態此鏈接:http://blogs.adobe.com/adobeandjquery/2011/03/07/the-current-state-of-touch-events/