扩展 jQuery 的 .on() 以处理移动触摸事件

发布于 2025-01-05 19:39:57 字数 724 浏览 1 评论 0原文

我正在尝试使用 jQuery mobile 事件,而不使用 jQuery mobile 的其余部分。

https://github.com/jvduf/jquery-mobile-events/ blob/master/jquery.mobile.events.js

该代码片段启用了所有这些功能,并且工作正常,但不适用于 .on() 事件处理程序。例如:

$('a').on('tap',function(){
    console.log('Hi there!');
});

但是它确实可以与 .live() 一起使用,但现在已经被贬值了。

所以我的问题是;有没有办法扩展 .on() 功能以包括点击事件和其他事件?下面是完整列表:

  • touchstart
  • touchmove
  • touchendorientationchange
  • :)
  • tap
  • taphold
  • swipe
  • swipeleft
  • swiperright
  • scrollstart
  • rollstop

谢谢

I am attempting to use the jQuery mobile events without the rest of jQuery mobile.

https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

That snippet enables them all, and works fine, but not with the .on() event handler. E.g:

$('a').on('tap',function(){
    console.log('Hi there!');
});

However it does work with .live(), but that is now depreciated.

So my question; is there a a way to extend the .on() functionality to include the tap event and others? Full list below:

  • touchstart
  • touchmove
  • touchend
  • orientationchange
  • tap
  • taphold
  • swipe
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北陌 2025-01-12 19:39:57

但是它确实可以与 .live() 一起使用,但现在已经被贬值了。

因此,我认为您希望使用事件委托来保留替换元素上的这些事件。这意味着

$('a').on('tap',function () {
    console.log('Hi there!');
});

需要将其更改为:

$(document).on('tap', 'a', function () {
    console.log('Hi there!');
});

以便其行为与 $("a").live("tap", ...

However it does work with .live(), but that is now depreciated.

So I take it that you want to use event delegation to preserve those events on replaced elements. That would mean that this:

$('a').on('tap',function () {
    console.log('Hi there!');
});

would need to change to something like:

$(document).on('tap', 'a', function () {
    console.log('Hi there!');
});

in order for it to behave the same as $("a").live("tap", ...

柳若烟 2025-01-12 19:39:57

也许为移动和桌面扩展 JQuery 事件代码应该更好。

一种方法是使用 JQuery vmouse(虚拟鼠标)插件。

来自 vmouse 插件评论:

// 这个插件是一个抽象触摸和鼠标的实验
// 事件让开发者不用担心输入哪个方法
// 加载文档的设备支持。
//
// 这里的想法是允许开发者为
注册监听器
// 基本鼠标事件,例如 mousedown、mousemove、mouseup 和 click,
// 插件将负责注册正确的监听器
// 在幕后以最快的速度调用侦听器
// 对于该设备,同时仍然保留
中事件触发的顺序
// 传统的鼠标环境,应该注册多个处理程序
// 在同一元素上处理不同的事件。
//
// 当前版本向 jQuery 绑定方法公开以下虚拟事件:
//“vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel”

有关更好的解释,请参阅 https://coderwall.com/p/ bdxjzg

vmouse 插件:https://github.com/jquery/jquery-mobile /blob/master/js/jquery.mobile.vmouse.js

另请参阅有关(触摸)事件当前状态的链接:http://blogs.adobe.com/ adobeandjquery/2011/03/07/the-current-state-of-touch-events/

Maybe it should be better to extend the JQuery event code for mobile and desktop.

One way to do this is to use the JQuery vmouse (virtual mouse) plugin.

From vmouse plugin comments:

// This plugin is an experiment for abstracting away the touch and mouse
// events so that developers don't have to worry about which method of input
// the device their document is loaded on supports.
//
// The idea here is to allow the developer to register listeners for the
// basic mouse events, such as mousedown, mousemove, mouseup, and click,
// and the plugin will take care of registering the correct listeners
// behind the scenes to invoke the listener at the fastest possible time
// for that device, while still retaining the order of event firing in
// the traditional mouse environment, should multiple handlers be registered
// on the same element for different events.
//
// The current version exposes the following virtual events to jQuery bind methods:
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"

For a better explanation, see https://coderwall.com/p/bdxjzg

vmouse plugin: https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

Also see this link about current state of (touch) events: http://blogs.adobe.com/adobeandjquery/2011/03/07/the-current-state-of-touch-events/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文