javascript - 单击元素内部时,div 不会自动关闭

标签 javascript jquery html css

fiddle :https://jsfiddle.net/scrfbe95/

现在我正在使用一个主 div,其中包含一个带有链接的元素列表,一旦您单击某个列表元素,它将在主 div 的右侧显示另一个 div。

但我想做的是,当您单击主 div 内的某个链接时,主 div 不会关闭。

<div id="main-div1" class="main-div">
  Main div 1
  <div class="content">
        <ul>
          <li> <a href=""> item 1 </a> </li>
           <li> <a href=""> item 1 </a> </li>

       </ul>
  </div>
</div>
<div id="main-div2" class="main-div">
  Main div 2
  <div class="content">
        <ul>
          <li> <a href=""> item 1 </a> </li>
           <li> <a href=""> item 1 </a> </li>

       </ul>  </div>
</div>
<div id="main-div3" class="main-div">
  Main div 3
  <div class="content">
        <ul>
          <li> <a href=""> item 1 </a> </li>
           <li> <a href=""> item 1 </a> </li>

       </ul>  </div>
</div>


.main-div {
  padding: 10px;
  margin-top: 5px;
  background-color: #000;
  color: #fff;
}

.main-div > .content {
  display: none;
  color: #fff;
}


(function($) {
    $(document).on('click','.main-div',function() { showMainDiv($(this)); });

  function showMainDiv($el) {
    var $elContent = $el.find('.content');
        if ($elContent.is(':visible')) {
        $elContent.stop(true,true).slideUp(500);
    }
    else {
      $('.main-div').find('.content').stop(true,true).not($elContent).slideUp(500);
      $elContent.slideDown(500);
    }
  }
})(jQuery);

最佳答案

修改点击监听器,使其仅在点击的 div 是预期的 div 时使用react

$(document).on('click','.main-div',function(e) {
  if (e.target !== this)
    return;

  showMainDiv($(this)); });

这是 fiddle ;

关于javascript - 单击元素内部时,div 不会自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44813422/

相关文章:

javascript - IE 数组中的appendChild 不起作用

javascript - jQuery 中的全部展开和全部折叠未按要求工作

javascript - 如何将变量传递给setTimeout?

javascript - xwiki REST ajax调用错误

html - 矩形下的 CSS 三 Angular 形

javascript - 客户端两次连接到服务器,Socket.io

javascript - 我可以从 HTML 源代码中找到弹出窗口的名称吗?

javascript - jQuery - 数字格式的小片段无法按预期工作

javascript - 我可以使用localStorage创建永久数据库吗?

html - 在同一行中并排对齐文本字段和按钮