当我们在平板电脑上点击外部时如何关闭 bootstrap 3 下拉菜单?

How to close bootstrap 3 dropdown when we click outside on a tablet?

我正在这样做,它在桌面上运行良好:

$(document).on("click", function(){
  $(".dropdown-toggle").removeClass("open");
});

但是 iPad 它不起作用,我的下拉菜单仍然打开

您应该在触摸设备上使用 touchstarttouchend 事件:

$(document).on("click touchend", function(){
    $(".dropdown-toggle").removeClass("open");
});

这个答案与 navbar 菜单相关,而不是一般的 dropdowns,但我在寻找我自己的答案时遇到了这个问题类似的问题(在外面点击时关闭汉堡包菜单),所以我想 post 其他人的替代解决方案,因为接受的答案不适用于 汉堡包子菜单 (点击打开 子菜单 将关闭 汉堡包 菜单。

此答案基于已接受的答案和 this answer, as well as NickGreen's comment on this 答案。

$('html').on('click, touchend', function (e) {
    // Close hamburger menu when tapping outside
    if ($(e.target).closest('.navbar').length == 0) {
        var opened = $('.navbar-collapse').hasClass('collapse in');
        if (opened === true) {
            $('.navbar-collapse').collapse('hide');
        }
    }
});

如果我不想在用户点击页面时关闭页面上的任何下拉菜单,我会使用此代码段。

$(document).on('click touchend', function(e) {
  if ($(e.target).closest('.open').length === 0) {
    $('.dropdown-toggle').parent().removeClass('open');
  }
});