是否有使用事件委派的Javascript“tap”事件库?

时间:2012-10-26 03:46:28

标签: javascript jquery mobile touch

理想情况下,我可以$(document.body).on("tap", "#myElement", this.eventHandler);

但是jQuery尚未这样做。

我看到很多图书馆 - https://github.com/bebraw/jswiki/wiki/Touch。该页面上有很长的列表。

他们似乎都使用老式的事件倾听。例如,$("#element").touchLibraryThingy(); $("#element").bind("tap")。相当于addEventListener

这对于ID(Sorta)来说非常棒,但是当我有50个列表项时,它们都有事件,我不希望旧Android上有人有50个事件监听器。出于性能原因!

是否有人知道使用已完成的事件委派的库?

这个stackoverflow问题类似,但没有说实话 - Extend jQuery's .on() to work with mobile touch events

2 个答案:

答案 0 :(得分:1)

看起来帖子Extend jQuery's .on() to work with mobile touch events中提到的blob实际上就是诡计......差不多。

链接到图书馆! https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

陷阱 桌面上的“点击”并不会阻止默认。我的网络应用程序中有奇怪的滚动行为和不连贯的菜单动画。

为了解决这个问题,我在app的命名空间中创建了一个全局属性:

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

然后我的所有事件监听器都这样做:

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

完成!现在我们都可以拥有一个非常好的移动网站。

答案 1 :(得分:1)

更好的是,现在使用jQuery Mobile自定义构建器,您只能选择他们的移动事件并获取最新的触摸代码,这些代码在上面的示例中有所改进。

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