使用 jquery 移动点击而不是点击

Posted

技术标签:

【中文标题】使用 jquery 移动点击而不是点击【英文标题】:Using jquery mobile tap instead of click 【发布时间】:2014-01-25 21:12:59 【问题描述】:

我正在制作一个需要在移动设备和非移动设备上运行的网络应用程序。在我的应用程序中,我有几个图标,用户可以单击以使用 websockets 向服务器发送消息。

我的代码如下所示:

$('.button-container').on('tap', '.sender', function() 
    socket.send('Message');
);

使用“tap”而不是“click”来为 iPad(和其他移动设备)提供支持,但由于这似乎有点像黑客,我有一些担忧。

'tap' 似乎在我的测试浏览器 Safari 7、Chrome 34 和 Firefox 26(均非移动设备)上工作,但对其他非移动浏览器的支持如何?

对于非移动浏览器使用“点击”而不是“点击”是否存在任何已知问题?

【问题讨论】:

【参考方案1】:

jQuery Mobile 特殊事件即taptapholdvclick...等,原本是touchmouse事件转换成特殊事件。

例如,tapvclicktouchstart/touchendmousedown/mouseup

在加载 jQuery Mobile 时,它​​会检查浏览器是否支持 touch,并相应地将事件转换为 mouse 事件或 touch 事件。

您可以根据浏览器的触摸支持在事件之间切换。对于非触摸浏览器,使用click,支持touch的浏览器使用tap

在启动时,检查$.support.touch,它将返回true (tap) 或false (click)。

var custom_event = $.support.touch ? "tap" : "click";

$(document).on(custom_event, "element", function () 
  /* code */
);

在您的桌面和移动设备上测试以下演示。

Demo

【讨论】:

感谢您的回复。澄清一下:假设我对 all 我的事件使用“点击”,因此完全删除“点击”。如果不支持触摸,jQuery Mobile 会回退到使用鼠标事件吗?因此,我的问题仍然存在,是否与仅使用“点击”而不是“点击”相关的任何问题。如果此信息包含在 jQuery Mobile 文档中,我深表歉意;我似乎找不到它。 @user1974124 是的,它支持触摸和鼠标事件。当您在 jQM 文档中找不到答案时,请查看其在 GitHub 上的代码。这是touch as well as mouse events code on GitHub。

以上是关于使用 jquery 移动点击而不是点击的主要内容,如果未能解决你的问题,请参考以下文章

未触发 Jquery 移动单击事件

如何在悬停而不是点击事件时打开 BeRocket 过滤器,WordPress?

如何在每次点击时首先显示负载而不是内容

Jquery移动按钮点击角落不起作用

Jquery下拉菜单单击始终打开

jQuery 怎么实现模拟鼠标点击效果,要点击的位置是用JS调用的,无法得到被点击标签的ID