3

我有一个汉堡图标,单击时会变成 X。再次单击时会变回 3 行。我让它工作,所以当点击链接时菜单消失,但汉堡菜单不会返回到 3 行。我没有尝试过任何工作。这就是我所拥有的。

var burgerIcon = $('.burger-icon');

function toggleBurger(){
    burgerIcon.click(function(){
        if(burgerIcon.hasClass("is-active") === true)
        {
            burgerIcon.removeClass("is-active");
            //console.log("remove");
        }
        else
        {
            burgerIcon.addClass("is-active");
            //console.log("add");
        }
    });
}

toggleBurger();

$('.toggle-nav').click(function() {
    $('body').toggleClass('show-nav'); 
    return false;
});

$('nav ul li > a').click(function(){
    //console.log("clicked");;
    $('body').trigger( "click" );
    burgerIcon.trigger( "click" );
});

HTML:

<nav>
<ul data-magellan-expedition="fixed">
                        <li data-magellan-arrival="work">
                            <a href="#work" class="hvr-sweep-to-right">Work</a>
                        </li>

                        <li data-magellan-arrival="about">
                            <a href="#about" class="hvr-sweep-to-right">About</a>
                        </li>

                        <li data-magellan-arrival="shadow">
                            <a href="#shadow" class="hvr-sweep-to-right">Shadow CC</a>
                        </li>

                        <li data-magellan-arrival="clients">
                            <a href="#clients" class="hvr-sweep-to-right">Clients</a>
                        </li>
                    </ul>
                </nav>

这是我要解释的小提琴:jsFiddle

4

1 回答 1

2

由于您在代码中使用 jQuery,因此您可以利用它,然后我相信您真正需要的是:

$('nav ul li > a,.c-hamburger').click(function () {
    console.log("clicked");
    $('body').toggleClass('show-nav');
    if ($('body').hasClass('show-nav')) {
        $('.c-hamburger').addClass("is-active");
    } else {
        $('.c-hamburger').removeClass("is-active");
    }
});

更新小提琴:http: //jsfiddle.net/qe38m0t9/2/

注意:这使用了两个选择器,一个用于“汉堡包”,另一个用于用逗号分隔的菜单,然后根据单击的内容执行相同的操作。

于 2015-07-31T21:55:09.703 回答