3

理想情况下我能做到$(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 问题很相似,但不是事实——扩展 jQuery 的 .on() 以处理移动触摸事件

4

2 回答 2

1

看起来在扩展 jQuery 的 .on() 以处理移动触摸事件一文中提到的 blob实际上可以解决问题……几乎。

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

桌面上的陷阱 “点击”似乎并不能阻止默认设置。我的网络应用程序中有奇怪的滚动行为和断断续续的菜单动画。

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

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

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

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

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

于 2012-10-26T04:28:08.990 回答
1

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

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

于 2012-11-26T00:51:24.450 回答