【问题标题】:Jquery 'document on click' doesn't work when Bootstrap dropdown-toggle fires当 Bootstrap 下拉切换触发时,Jquery '单击文档'不起作用
【发布时间】:2019-05-21 19:05:19
【问题描述】:

问题

我有一个事件侦听器,当点击发生在下拉列表之外时,它会隐藏下拉列表(通过删除一个类):

$(document).on('click', function(event) {
 if (!$(event.target).closest('#myDropdown').length) {
      $('#myDropdown').removeClass("show-menu");
 }
});

它运行良好,除非我单击引导下拉菜单(使用类 '.dropdown-toggle)。在这种情况下,我的下拉菜单保持打开状态,而引导下拉菜单也打开。在 DOM 中从未听到过 click 事件。

【问题讨论】:

    标签: jquery twitter-bootstrap-3 dropdown stoppropagation


    【解决方案1】:

    更新:经过一番挣扎,我找到了答案:

    由于某些未知原因,Bootstrap .dropdown-toggle 包含一个 stopPropagation。因此,当它单击它时,不会听到文档树中的任何其他内容。除了我的文档侦听器之外,我的解决方案是显式包含 .dropdown-toggle 类的事件侦听器。

          $(document).on('click', function(event) {
            if (!$(event.target).closest('#myDropdown').length) {
              $('#myDropdown').removeClass("show-menu");
            }
          });
    
          //listens for Bootstrap .dropdown-toggle
          $('.dropdown-toggle').on('click', function(event) {
            if (!$(event.target).closest('#myDropdown').length) {
              $('#myDropdown').removeClass("show-menu");
            }
          });
    

    如果有人有更好的解决方案,我很乐意将其标记为正确答案!

    【讨论】:

    • 这里不行:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多