【问题标题】:Is there a Javascript "tap" event library that uses event delegation?是否有使用事件委托的 Javascript“点击”事件库?
【发布时间】:2012-10-26 03:46:27
【问题描述】:

理想情况下我可以做到$(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

【问题讨论】:

标签: javascript jquery mobile touch


【解决方案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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多