3

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

我有一个在悬停时激活的基本下拉菜单(使用 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. 检测悬停的能力(不确定如何完成)并使用点击处理程序(如果可用)。

4

2 回答 2

3

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

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

if ("ontouchstart" in document) {
    // touch only code
} else {
    // "desktop" code
}
于 2012-08-09T21:30:39.797 回答
2

默认情况下,iO 和一些 Android 实现了悬停事件的点击。它很方便,但是,您需要确保您的顶级链接指向有效的锚点。不可点击的父放置者的日子已经一去不复返了,如果该链接只指向一个页面,所有子元素都列为链接,那就这样吧。但让它去某个地方。

于 2012-08-09T22:01:14.653 回答