使用 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 特殊事件即tap
、taphold
、vclick
...等,原本是touch和mouse事件转换成特殊事件。
例如,tap
和 vclick
是 touchstart
/touchend
或 mousedown
/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 移动点击而不是点击的主要内容,如果未能解决你的问题,请参考以下文章