2012-10-26 81 views
3

理想情況下,我可以做$(document.body).on("tap", "#myElement", this.eventHandler);是否有使用事件代表團的Javascript「tap」事件庫?

但jQuery還沒有做到這一點。

我看到很多圖書館 - https://github.com/bebraw/jswiki/wiki/Touch。該頁面上有很長的列表。

他們似乎都使用老式的事件聆聽。如$("#element").touchLibraryThingy(); $("#element").bind("tap")。相當於addEventListener

這對於ID(Sorta)非常棒,但是當我有50個列表項目都有事件發生時,我不希望某個舊Android上的人員擁有50個事件偵聽器。出於性能原因!

有誰知道使用事件代理的庫已完成

這個計算器的問題是相似的,但不來的道理 - Extend jQuery's .on() to work with mobile touch events

+0

請看這個問題。 http://stackoverflow.com/questions/1314450/jquery-how-to-capture-the-tab-keypress-within-a-textbox – jhanifen

回答

1

更好的是,現在使用jQuery Mobile自定義構建器,您只能選擇他們的移動事件並獲取最新的觸摸代碼,該代碼對上述示例有所改進。

http://jquerymobile.com/download-builder/

1

貌似在後Extend jQuery's .on() to work with mobile touch events提到的斑點實際上做的伎倆......幾乎。

鏈接到圖書館! https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

gotcha 桌面上的「點按」並不妨礙默認。我在我的網絡應用程序中有奇怪的滾動行爲和不規則的菜單動畫。

爲了解決這個問題,我創建我的應用程序的命名空間中的全局屬性:

var R = window.R = window.R || {}; 
R.touchEvent = ('ontouchstart' in window') ? "tap" : "click"; 
window.$body = $(document.body); 

然後我所有的事件監聽器做到這一點:

$body.on(R.touchEvent, ".myHellaLongListItems", this.eventHandler); 

完成!現在我們都可以擁有一個非常漂亮的移動網站。