理想情况下,我可以$(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
答案 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自定义构建器,您只能选择他们的移动事件并获取最新的触摸代码,这些代码在上面的示例中有所改进。