javascript - 下拉菜单在 iPhone 上不起作用

标签 javascript jquery ios css iphone

目前我的导航和下拉菜单无法在 iOS 设备(尤其是 iPhone)上运行。

当用户单击具有子项的导航项时,我会在显示下拉列表的父容器上切换一个类。

下面是HTML:

<div class="menu-main-menu-container">
    <ul id="menu-main-menu" class="menu">
        <li id="menu-item-365" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-365 nav-open"><a href="#">About</a>
            <ul class="sub-menu">
                <li id="menu-item-44" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44"><a href="http://localhost:8888/beulah/about/im-new/">I’m New</a></li>
                <li id="menu-item-166" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-166"><a href="http://localhost:8888/beulah/about/membership/">Membership</a></li>
                <li id="menu-item-43" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43"><a href="http://localhost:8888/beulah/about/core-values/">Core Values</a></li>
                <li id="menu-item-45" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-45"><a href="http://localhost:8888/beulah/about/our-history/">Our History</a></li>
                <li id="menu-item-46" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46"><a href="http://localhost:8888/beulah/about/staff-directory/">Staff Directory</a></li>
            </ul>
        </li>
    </ul>
</div>

CSS:

.sub-menu {
  opacity: 0;
  max-height: 0;
  visibility: hidden;
  transition: all 0.3s ease-in-out;
  -webkit-transition: all 0.3s ease-in-out;
}

.nav-open .sub-menu {
  visibility: visible;
  position: relative;
  opacity: 1;
  padding-top: 25px;
  padding-bottom: 25px;
  height: inherit;
  max-height: 300px;
}

JS:

$(".menu-item > a").click(function(e){
  e.preventDefault();
  $(this).parent().toggleClass("nav-open");
});

截至目前,单击时会应用该类,但在 iPhone 上不会打开下拉菜单。

最佳答案

问题是,iPad/iPhone 的点击事件不会像在您的桌面上那样被触发。

您需要选择以下任一事件:

touchstart
touchmove
touchend
touchcancel

所以,这里:

$(".menu-item > a").bind( "touchstart" , function(e){
     e.preventDefault();
     $(this).parent().toggleClass("nav-open");
}); 

关于javascript - 下拉菜单在 iPhone 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579163/

相关文章:

javascript - iframe 中的 redirect_to

javascript - 如何创建一个表单,该表单将在单击按钮时添加包含多个输入字段的行

iphone - 从不同的类创建一个 NSString

ios - 我应该在 app.json 文件中更改什么才能从 expo 重建我的应用程序?

ios - AFNetworking 返回函数

javascript - 继续使用代码 1 退出 "tsc.exe"

javascript - 停止并行运行的异步任务

jquery - 如何将 'depends:' 规则添加到 jQuery 验证插件中的多个字段?

javascript - 数量没有增加

javascript无法使用double来获得总和