解决了 iPad/iPhone 悬停导致用户双击链接的问题。但是如何处理花式框链接

Posted

技术标签:

【中文标题】解决了 iPad/iPhone 悬停导致用户双击链接的问题。但是如何处理花式框链接【英文标题】:iPad/iPhone hover causes the user to double click a link is solved. But what to do with fancybox links 【发布时间】:2013-09-12 19:42:47 【问题描述】:

This answer 是围绕我的网站导航的 :hover 的完美解决方案,因此 iPad 用户不必双击链接。

$('a').on('click touchend', function(e) 
   var el = $(this);
    var link = el.attr('href');
    window.location = link;
);

现在我该如何处理 FancyBox 链接?我可以通过他们另一堂课或任何需要的东西来获得正确的结果。 Window.location 没有解决方案(有带有 iframe 的 fancyBoxes)。

我创建了两个小提琴来证明问题也出现在没有 iframe 的情况下。

first one 会打开fancybox,但the second one 只能在我的台式电脑上运行,而不能在 iPad 上运行。

另外,一些fancybox 链接直接在页面的导航中,带有:hover 效果。在这里,用户不必单击两次,Fancy-Iframe 就会打开。

谁能告诉我如何解决这个问题。 非常感谢大家的帮助。

【问题讨论】:

【参考方案1】:

您可以在 fancybox 选择器上触发 click 事件,而不是 window.location

因此,您可以在第二个 jsfiddle 中调整代码:

$(document).ready(function () 

    $('.fancybox').fancybox();

    $('a').on('click touchend', function (e) 
        var fancy = this.className.indexOf('fancybox') != -1;
        if (fancy) 
            $(this.className).trigger("click")
         else 
            // var el = $(this); 
            // var link = el.attr('href'); // simply use this.href
            window.location = this.href;
            return false;
        
    );
);

查看您更新的JSFIDDLE

注意:如果您有画廊,您可能会遇到同样的问题,悬停在花式导航箭头上,在这种情况下,您可能需要触发 iPad 的 $.fancybox.next()$.fancybox.prev() 方法或使用而是使用助手按钮。

【讨论】:

以上是关于解决了 iPad/iPhone 悬停导致用户双击链接的问题。但是如何处理花式框链接的主要内容,如果未能解决你的问题,请参考以下文章

jQuery superfish 菜单/悬停在 iPad、iPhone 等

悬停 CSS 上的 iPad/iPhone 触摸事件

无法安装Apple mobile device support 导致ipad(iphone)无法连接itunes的解决办法

单击触摸设备 (iPad/iPhone) 上的任意位置以隐藏由 .hover() 切换的下拉菜单

使用 jQuery 在 iOS 上对单击/悬停行为感到困惑

如果用户在文档准备好之前悬停,jQuery .hover 会导致问题