移动设备的基本 jquery 切换菜单不起作用

Posted

技术标签:

【中文标题】移动设备的基本 jquery 切换菜单不起作用【英文标题】:Basic jquery toggle menu for mobile not working 【发布时间】:2013-09-20 22:46:59 【问题描述】:

我有一个使用 jQuery 的 on: tap 的非常基本的切换菜单,但它不起作用:

<nav id="mobile-nav">
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
        etc...
    </ul>
</nav>

<div id="anchor">
    <header>
        <img src="menu-icon.png">
    </header>
</div>

那么,

$(document).ready(function() 
    var speed = "fast";

    $("#anchor").addClass("hidden");

    $("#anchor.hidden header img").on("tap", function() 
        $("#mobile-nav").animate(
            left: "0px"
        , speed);

        $("header").animate(
            left: "252px"
        , speed);

        $("#anchor").removeClass("hidden");
        $("#anchor").addClass("active");
    );

    $("#anchor.active header img").on("tap", function() 
        $("#mobile-nav").animate(
            left: "-252px"
        , speed);

        $("header").animate(
            left: "0"
        , speed);

        $("#anchor").removeClass("active");
        $("#anchor").addClass("hidden");
    );

);

#mobile-nav是一个div,它是width中的250px,并设置为absolute position,其中-252pxleft,然后在点击图像图标时设置为0 (使其滑入视野)。如您所见,一旦滑出,它应该删除hidden 类并添加active 类。然后我设置了一个自定义的tap 函数来滑动它back 并删除active 类并再次添加hidden。它会滑出,但不会滑回。我做错了什么?

【问题讨论】:

你在某个地方找到了它吗? 尝试更改为点击事件,看看是否会触发。 Tap 是 jQuery Mobile 专有的,在 jQuery 中不存在,我不认为。 好的,我会试试的,但我也在使用 jquery mobile。更新:不。结果与tap 相同 【参考方案1】:

我认为问题在于您的图片点击触发了多个事件。试试这样的:

$(document).ready(function() 
    var speed = "fast";

    $("#anchor").addClass("hidden");

    $("#anchor header img").on("click", function() 
        $('#anchor').hasClass('active') ? left = '-=252px' : left = '+=252px';
        $("#mobile-nav, header").animate('left': left, speed);    
        $("#anchor").toggleClass("hidden active");
    );

);

Fiddle

【讨论】:

就是这样!非常感谢你。 :)

以上是关于移动设备的基本 jquery 切换菜单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

切换在移动设备上不起作用

Jquery移动表列切换不起作用[重复]

Bootstrap 折叠菜单链接在移动设备上不起作用

引导数据切换在移动设备上不起作用

第二次单击时的 jQuery 不起作用 - 移动设备

下拉菜单在移动设备上不起作用