【问题标题】:Disable the user being able to click on a li element禁用用户能够点击 li 元素
【发布时间】:2018-05-10 18:40:08
【问题描述】:

我正在使用引导程序并尝试禁用 li,因此当用户单击下拉列表中的 li 元素之一时,没有任何反应。目前,当我单击顶部 li 元素时,下拉菜单关闭。我希望它保持开放。 我发现的大部分资源都是关于禁用链接的。我想创建一个类似于 Facebook 上的下拉菜单。

这是我的html

<div class="dropdown">
  <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example
  <span class="caret"></span></button>
  <ul class="dropdown-menu">
    <li id="test"><a href="#">HTML</a></li>
    <li><a href="#">CSS</a></li>
    <li><a href="#">JavaScript</a></li>
  </ul>
</div>

这是我的css

#test{
  background-color:red;
  pointer-events: none;
}

这里是 jsfiddle 的链接。

https://jsfiddle.net/aaronmk2/DTcHh/67643/

【问题讨论】:

  • 当用户点击&lt;li&gt;中的任何一个时你想做什么?
  • @Abrar,目前当我点击
  • 时,下拉菜单关闭。我希望下拉菜单保持打开状态。
  • $('li').on('click', function(event){ // 事件不会传播到文档节点和 // 因此委托事件不会触发 event.stopPropagation(); });
  • 标签: jquery html css twitter-bootstrap


    【解决方案1】:

    基于在单击li 时保持下拉菜单打开的单一要求,下面的代码将起作用。只需stop the event propagation

    $(".dropdown-menu li").click(function(e) {
      e.stopPropagation();
    });
    

    这里是a working fiddle

    【讨论】:

      【解决方案2】:

      从您的按钮中删除data-toggle 属性并使用以下JS 来解决您的问题:

      $('.dropdown-toggle').on('click', function (event) {
          $(this).parent().toggleClass('open');
      });
      
      $('body').on('click', function (e) {
          if (!$('.dropdown-toggle').is(e.target) 
              && $('.dropdown-toggle').has(e.target).length === 0 
              && $('.open').has(e.target).length === 0
          ) {
              $('.dropdown-toggle').removeClass('open');
          }
      });
      

      小提琴:https://jsfiddle.net/DTcHh/67653/

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签