【问题标题】:I want to close my drop-menu on same button click it opened with but i use keep-open我想在同一个按钮上关闭我的下拉菜单单击它打开但我使用保持打开
【发布时间】:2020-07-09 21:55:05
【问题描述】:

我想让下面的代码在不点击 #dropMenuLogin 时工作。

$("body:not(#dropdownMenuLogin)").click(function(){
  $('.keep-open').on({
      "shown.bs.dropdown": function() { this.closable = false; },
      "click":             function() { this.closable = false; },
      "hide.bs.dropdown":  function() { return this.closable; }
});
});

这不起作用。

【问题讨论】:

  • a:not(#b)a#b 的倒数。它不表示子选择器。
  • @Taplar 感谢您的时间和回答。我不明白我说的是在正文时单击,但在单击 #dropdownMenuLogin 时不执行代码。所以这不正确吗?我需要怎么做?我希望它在单击 #dropdownMenuLogin 时关闭。否则下拉菜单需要保持打开状态。
  • id dropdownMenuLogin 是在 body 上,还是在 body 的子代上?
  • @Taplar 我的navigation.php 包含#dropdownMenuLogin 在body 标签中是的。身体内的一切都可以是身体的孩子。我不明白对不起
  • 所以它是 body 的 child。重新阅读我的第一条评论所说的话。 body:not(#someId)body 标记匹配,该标记上没有该 id。它与身体的孩子没有任何关系。

标签: jquery dropdown


【解决方案1】:

在回调中处理它可能比使用选择器更容易

$(document).click(function(e){
  if(e.target.id === "dropdownMenuLogin") return;
  console.log("not dropdownMenuLogin")
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dropdownMenuLogin">test</div>

【讨论】:

  • 感谢您的宝贵时间和回答。奇怪的是if(e.target.id === "dropdownMenuLogin") { alert(1);} 不提醒我不明白。它确实在 ELSE 中发出警报。
  • e.target.id 给你什么?确保它是dropdownMenuLogin
  • 感谢您的提问。我发现了为什么&lt;a id='dropdownMenuLogin'&gt;Login&lt;/a&gt; >&lt;a id='dropdownMenuLogin' class='nav-link badge no-style-for-badge' data-toggle='dropdown' href='#'&gt;Login&lt;i class='arrow-loginheader down'&gt;&lt;/i&gt;&lt;/a&gt;。我仍然需要看看究竟是哪个元素阻止了target.id
  • data-toggle='dropdown' 阻止target.id
  • 如何解决这个问题我不知道如何解决,我尽我所能。你知道怎么做吗?
猜你喜欢
  • 1970-01-01
  • 2022-08-10
  • 2013-11-13
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多