Bootstrap 如何在导航栏外部单击时关闭导航栏

k97glaaz  于 2022-12-07  发布在  Bootstrap
关注(0)|答案(3)|浏览(161)

如何编辑我的代码,使导航栏在外部单击时关闭,但在内部单击时保持打开状态?

$(document).ready(function() {
  $('.nav-btn').on('click', function() {
  $('.nav-btn').removeClass('active');
    $(this).parent().find('.sub-menu').slideToggle();
    $(this).toggleClass('active');
  });
});
fv2wmkja

fv2wmkja1#

$(document).ready(function () {
    $('.nav-btn').on('click', function (e) {
        
        // Stop Document to be clicked when clicked in nav.
        e.stopPropagation()

        $('.nav-btn').removeClass('active');
        var subMenu = $(this).parent().find('.sub-menu')
        if (!$(".sub-menu").is(":visible")) {
            $(this).parent().find('.sub-menu').slideToggle();
        }
        $(this).toggleClass('active');
    });

    // Toggle Sub Menu and remove active when Any vacant place is clicked
    $(this).on('click', function (event) {
        $('.nav-btn').removeClass('active');
        $('.nav-btn').parent().find('.sub-menu').slideToggle();
    });

    // Prevent View close when Sub Items is clicked
    $('.sub-menu').on('click', function (e) {
        e.stopPropagation()
    })
});

你好,你只需要防止文档点击时点击导航项,并处理一些额外的事情,如在上面的代码。
您还可以看到Plunker example here

egdjgwm8

egdjgwm82#

$(document).on('click', function (event) {
    if ($(event.target).closest('.main-nav').length === 0) {
        // Close button code
    }
});
vjrehmav

vjrehmav3#

另一种可能的方法是将所有内容 Package 在另一个div中(除了标题和导航栏),并使用onclick标记:

<div onclick="hideNavbar()">
     all your content goes here
</div>

function hideNavbar() {
   $('.navbar-collapse').collapse('hide');
   // getting the navbar div with jQuery  
  // and calling the function 'hide' of the Bootstrap class 'collapse'
}

相关问题