使用Jquery切换navicon下拉菜单(点击也需要工作)

时间:2017-09-26 15:44:51

标签: jquery click toggle navbar dropdown

<li class="dropdown" id="dropdownquery">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i id="toggle" class="fa fa-bars" aria-hidden="true"></i> </a>
                <ul class="dropdown-menu">
                    <li><a class="dropdowntitle" href="#">About us</a></li>
                    <li><p class="dropdowntitle" href="#">More1</p></li>
                    <li><p class="dropdowntitle" href="#">More2</p></li>
                    <li><p class="dropdowntitle" href="#">More3</p></li>
                    <li><a class="dropdowntitle" href="#">FAQs</a></li>
                    <li><a class="dropdowntitle" href="#">Recent News</a></li>
                    <li><a class="dropdowntitle" href="#">Contact Us</a></li>
                </ul>
 </li>

我设置了导航栏。当我点击上面的下拉菜单时,我希望navicon从汉堡包变成十字架。我知道以下内容适用于单击下拉列表时切换:

$('.dropdown').click(function(){
$('#toggle').toggleClass('fa fa-bars fa fa-times')

});

但是,导航栏还允许用户点击菜单,菜单将再次最小化。发生这种情况时,navicon不会更改回原始的navicon。我怎样才能做到这一点?我试过以下无济于事:

 if ($('#dropdownquery').hasClass('dropdown open')) {
    $('body').click(function(){
    $('#toggle').toggleClass('fa fa-bars fa fa-times')
})};

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码捕获页面上任意位置的点击事件,并使用e.target.id检查您的菜单是否被点击。您可能需要根据需要调整此代码。

您可以使用this post来解决问题。

$('body').click(function(e)
{
    var targetId = e.target.id;
    if(targetId == "dropdownquery")
    {
        $('#toggle').addClass('fa fa-bars fa fa-times')
    }

    else
    {
        $('#toggle').removeClass('fa fa-bars fa fa-times')
    }
});