0
votes

I have responsive menu when I test my menu on mobile phone it will convent to it will show two button one for nav bar other one to toggle the side bar to remove classes hidden-xs and hidden-sm . my problem is btnToggleSidebar is not responding to click event can someone help me ?

html nav

    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed pull-left" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar" style="color:#fff"></span>
                    <span class="icon-bar" style="color:#fff"></span>
                    <span class="icon-bar" style="color:#fff" ></span>
                </button>
                <button type="button" id="btnToggleSidebar" class="navbar-toggle pull-right" data-toggle="collapse" data-target=".navbar-ex2-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <i class="glyphicon glyphicon-cog" style="color:#fff"></i>
                </button>

                    <a class="navbar-brand" id="goHome" href="/Home/MyEvents"><span class="logo logo-icon"></span></a>
                    <a class="navbar-brand" id="goHome" href="/Home/MyEvents">@ViewBag.Configname</a>
</div>
            <div id="navbar" class="navbar-collapse collapse">
                @*<ul class="nav navbar-nav">
                    <li class="active"><a href="#">Home</a></li>
                    <li><a href="#about">About</a></li>
                    <li><a href="#contact">Contact</a></li>
                </ul>*@
                <ul class="nav navbar-nav navbar-right">
                    <li><a id="username" href="./">@ViewBag.UsernameAndRole <span class="sr-only ">(current)</span></a></li>
                </ul>
            </div><!--/.nav-collapse -->
        </div>
    </nav>

JavaScript

   $(document).on('click', 'button #btnToggleSidebar.navbar-toggle', function () {

        alert("defvs");
        $("div").toggleClass("hidden-sm").toggleClass("hidden-xs");

    });
3

3 Answers

1
votes

Remove the space between button and #btnToggleSidebar.navbar-toggle

 $(document).on('click', 'button#btnToggleSidebar.navbar-toggle', function () {

        alert("defvs");
        $("div").toggleClass("hidden-sm").toggleClass("hidden-xs");

    });
0
votes

Not sure what you selector is targeting, but changing it to:

$(document).on('click', '#btnToggleSidebar', function () {
  alert("defvs");
  $("div").toggleClass("hidden-sm").toggleClass("hidden-xs");
});

Caused the alert to fire. Since #btnToggleSidebar and .navbar-toggle apply to the same element, you can simply target the ID and apply the click function to it.

Keep in mind you have other issues after this event fires: In mobile view the buttons on your navbar disappear completely.

0
votes

Try this

$('.pull-left').on('click', function () {

    alert("Hiding Nav");
    $('.navbar-nav:first-child').toggleClass("hidden-sm");


});
$('.pull-right').on('click', function () {

    alert("Hiding Sidebar");
      $('.nav:last-child').toggleClass("hidden-xs");

});