javascript - 我如何只劫持 LI 中的一个特定链接而不是所有链接?

标签 javascript jquery html css

我有一个菜单,在每个 li 中, 它将有多个 <a>标签。主要的是元素的名称。单击该按钮时,我希望发生 Dropdown 事件。但在 <li> 内的元素上我希望这些点击功能正常运行。

我的 HTML 看起来像这样:

<li class="tree-item-name"><a href="#">Aunts &amp; Uncles</a>
    <span class = "bootstrap-styles">
       <ul>
           <li>
               <a href="/family_trees/3"><img alt="Default" class="img-circle" height="48" src="/assets/default.jpg" width="48" /></a>
                <a href="/family_trees/3">Jackie Lynn</a> <a data-confirm="Are you sure?" data-method="delete" href="/family_trees/3" rel="nofollow"><i class="fa fa-thumbs-o-down"></i></a>
            </li>
        </ul>
     </span>
 </li>

JS 看起来像这样:

jQuery(document).ready(function(){
    jQuery('LI.tree-item-name').click(function(){
        if (jQuery(this).hasClass('opened')) {
            jQuery(this).find('UL').slideUp();
            jQuery(this).removeClass('opened');
        } else {
            jQuery(this).find('UL').slideDown();
            jQuery(this).addClass('opened');
        }
        return false;
    });
});

但是现在,当您点击 img标签或 Jackie Lynn ....都不起作用 - 因为两者都被 JS 劫持了。

我该如何设置,所以只有 li.tree-item-name有影响吗?

最佳答案

您需要停止事件传播并仅针对其中包含 ulli

jQuery(function($) {
  $('LI.tree-item-name').has('ul').click(function() {
    if ($(this).hasClass('opened')) {
      $(this).find('UL').slideUp();
      $(this).removeClass('opened');
    } else {
      $(this).find('UL').slideDown();
      $(this).addClass('opened');
    }
    return false;
  });

  $('LI.tree-item-name li').click(function(e) {
    e.stopPropagation();
  })
});
.tree-item-name ul {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li class="tree-item-name">
    <a href="#">Aunts &amp; Uncles</a>
    <span class="bootstrap-styles">
      <ul>
        <li>
          <a href="/family_trees/3"><img alt="Default" class="img-circle" height="48" src="/assets/default.jpg" width="48" /></a>
          <a href="/family_trees/3">Jackie Lynn</a> <a data-confirm="Are you sure?" data-method="delete" href="/family_trees/3" rel="nofollow"><i class="fa fa-thumbs-o-down"></i></a>
        </li>
      </ul>
    </span>
  </li>
</ul>

关于javascript - 我如何只劫持 LI 中的一个特定链接而不是所有链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268492/

相关文章:

javascript - 在发送表单数据之前打开模式 Laravel

javascript - 在 Meteor js 中同时登录的两个同时用户

javascript - JSF 数据表分页中的当前页码

javascript - 从字符串中删除元素并连接它的更好方法是什么?

javascript - TypeScript $(...).tooltip 不是函数

javascript - 获取用于 actionEvent 处理的父 div 的最简单方法?

javascript - JS开发的最佳实践?

javascript - 当鼠标悬停在其他元素上时元素上的 jQuery 事件

javascript - Div 隐藏,直到我单击文本/按钮,出现,然后当我单击另一个时,它消失,另一个可见

javascript - href '#' ?尝试制作音频控件