以下代码显示了一个称为的菜单 #wrap-footer 单击时通过滑动 #menu-button. 。单击页面上的任何地方,除了菜单使其逐回去。

当菜单可见时 #menu-button 在其中添加了一个名为“菜单开放”(用于样式)的类。菜单再次隐藏后,将删除类。

注意,我已经使用了选择器 #wrap-header, #wrap-pre-footer, #wrap-content 而不是只是 html 或者 document 由于iPhone无法识别这些。

$(document).ready(function(){
    $("#menu-button a").hide();
    $('#menu-button').append('Menu');

    $('#wrap-header,#wrap-pre-footer,#wrap-content').click(function() {
        $('#wrap-footer').slideUp('slow');
        $('#menu-button').removeClass('menu-open');
    });

    $('#menu-button').click(function(event){
       event.stopPropagation();
       $('#menu-button').toggleClass('menu-open');
       $('#wrap-footer').slideToggle('slow');
    });

    $("#wrap-footer").click(function(e) {
       e.stopPropagation();
    }); 
});

在台式机上浏览一切都很好。但是,在iPhone上,Slidetoggle工作正常,但是ToggleClass永远不会删除该类。因此,如果菜单打开,请单击页面(但不是 #menu-button 或者 #wrap-footer)最小化菜单并删除课程,但请单击 #menu-button 仅将菜单最小化,不会删除课程。

谢谢

有帮助吗?

解决方案

原来JS很好。真正的问题是CSS悬停课程。在iPhone上,您单击的最后一个元素一直是悬停状态。删除CSS悬停类(我的移动网站版本不需要)修复了此问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top