仅针对父级而非子级单击事件

时间:2017-03-28 07:36:44

标签: jquery jquery-events

我需要在我的导航中添加点击事件,但我只希望事件为父级,而不是子菜单。

我必须做什么?



$(document).ready(function() {
  $('nav ul li a').click(function() {
    alert('test');
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
    <ul>
        <li><a href="#">Test</a></li>
        <li><a href="#">Test</a></li>
        <li>
            <a href="#">Test</a>
            <ul>
                <li><a href="#">Test</a></li>
                <li><a href="#">Test</a></li>
                <li><a href="#">Test</a></li>
            </ul>
        </li>
        <li><a href="#">Test</a></li>
        <li>
            <a href="#">Test</a>
            <ul>
                <li><a href="#">Test</a></li>
                <li><a href="#">Test</a></li>
                <li><a href="#">Test</a></li>
            </ul>
        </li>
    </ul>
</nav>
&#13;
&#13;
&#13;

https://jsfiddle.net/usbwLkjp/

4 个答案:

答案 0 :(得分:2)

更改您的css选择器以定位此类直接后代

$('nav > ul > li > a')

答案 1 :(得分:2)

$(document).ready(function() {
           
  $('nav>ul>li>a').click(function(e) {
   
    alert('test');
  
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
        <ul>
            <li><a href="#">Test</a></li>
            <li><a href="#">Test</a></li>
            <li>
                <a href="#">Test</a>
                <ul>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                </ul>
            </li>
            <li><a href="#">Test</a></li>
            <li>
                <a href="#">Test</a>
                <ul>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                </ul>
            </li>
        </ul>
    </nav>

答案 2 :(得分:1)

您可以使用箭头>定位直接儿童

 $(document).ready(function() {               
      $('nav > ul > li > a').click(function() {
        alert('test');
      });    
 });

<强> DEMO HERE

答案 3 :(得分:0)

这适合您:

$(document).ready(function() {
           
  $('nav>ul>li>a').click(function() {
    alert('test');
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
        <ul>
            <li><a href="#">Test</a></li>
            <li><a href="#">Test</a></li>
            <li>
                <a href="#">Test</a>
                <ul>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                </ul>
            </li>
            <li><a href="#">Test</a></li>
            <li>
                <a href="#">Test</a>
                <ul>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                    <li><a href="#">Test</a></li>
                </ul>
            </li>
        </ul>
    </nav>