我的手机菜单Jquery脚本只运行一次

时间:2016-04-22 11:28:47

标签: javascript jquery jquery-mobile mobile menu

您好我是jquery的新手,只是尝试将一个简单的脚本放在一起,以便在点击时显示/隐藏我的移动菜单。它工作正常,但它只能运行一次,直到您刷新浏览器。

Jquery的:

$(document).ready(function () {
  //your code here
    $(".nav").addClass("hidenav");
    $(".menutrigger").click(function () {
        $(".nav").removeClass("hidenav").addClass("slidenav");

$(".menutrigger").click(function () {
        $(".nav").removeClass("slidenav").addClass("hidenav");
        });

        });
});

CSS:

@media (max-width: 767px) {
    .slidenav {
        display: block;
    }
    .hidenav {
        display: none;
    }
}

3 个答案:

答案 0 :(得分:0)

这是因为您正在定义多个点击事件

这应该有效

$(document).ready(function()
    {
        //your code here
        $(".nav").addClass("hidenav");
        var flag = 0;
        $(".menutrigger").click(function()
        {
            if(flag == 0)
            {
                flag = 1;
                $(".nav").removeClass("hidenav").addClass("slidenav");
            }
            else
            {
                flag = 0;
                $(".nav").removeClass("slidenav").addClass("hidenav");
            }

        });
    });

答案 1 :(得分:0)

声明多个onClick事件无法正常工作,并将被最后一个覆盖。你可以通过检查你的班级是否存在来完成onclick回调中的所有这些事情

$(document).ready(function () {
  //your code here
    $(".nav").addClass("hidenav");
    $(".menutrigger").click(function () {
        if ($(".nav").hasClass("hidenav")){
           $(".nav").removeClass("hidenav").addClass("slidenav");
        } else if ($(".nav").hasClass("slidenav")){
           $(".nav").removeClass("slidenav").addClass("hidenav");
        }
    });
});

答案 2 :(得分:0)

您是否尝试过toggleClass?

$('.menutrigger').click(function (e) {
     $('.demo').toggleClass("hidenav");
});

它会将您的代码压缩到1行。

查看this fiddle

了解有关.toggleClass()的更多信息。请参阅jQuery API doc