javascript - 使悬停菜单适用于移动设备的最佳实践方法是什么?

标签 javascript jquery mouseevent jquery-events touch-event

我环顾四周,但没有找到似乎是常见问题的答案。

我有一个在悬停时激活的基本下拉菜单(使用 jQuery 的 hoverintent 插件)。它适用于桌面浏览器,但对于不像 iPad 那样将悬停事件转换为点击的移动设备,它不起作用。这是现在的 Javascript:

$('li.threecolumns, li.twocolumns, li.onecolumn').hoverIntent(      
function() {
    $(this).children('div').fadeToggle(fadeInSpeed);
},
function() {
    $(this).children('div').fadeToggle(fadeOutSpeed);
});

我的问题是:在移动设备上使用点击并在桌面上悬停下拉菜单的最简洁、问题最少的方法是什么?我有几个想法,但不确定是哪个:

  1. 附加 onclick 事件并在每次点击时禁用悬停。

  2. 检测悬停的能力(不确定这是如何完成的)并使用点击处理程序(如果可用)。

最佳答案

当有事件处理程序时,至少 iOS 会自动干扰 hover 事件,因此您必须点击一次 hover 事件,第二次点击任何 点击事件。

检测 hove 是微不足道的。检查客户端是否支持touch。如果有 touch,则没有 hover

if ("ontouchstart" in document) {
    // touch only code
} else {
    // "desktop" code
}

关于javascript - 使悬停菜单适用于移动设备的最佳实践方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892155/

相关文章:

javascript - 如何开发自定义 Protractor 定位器?

javascript - 连接到服务器 AJAX 调用时出错

javascript - 推送到 dom-repeat 中使用的数据绑定(bind)数组( polymer )

javascript - 页面上有 2 个带有 JS 验证的表单 - 其中一个抛出电子邮件验证错误

javascript - 使用 JavaScript 用数据触发键盘事件

java - JPopupMenu 不显示 JMenuItem 的文本

Java MouseListener 在按下鼠标时禁用 MouseMotionListener

javascript - 动态更改文本框焦点上的视口(viewport)会阻止显示 Android 键盘

javascript - 通过 jQuery 无限循环图像

javascript - 动态html生成div id麻烦