2

我有一个带有子列表的简单列表

<div id="master">
<ul>
    <li><div>Trigger Me!</div></li>
    <li><div>Trigger Me!</div></li>
    <li><div>Trigger Me!</div>
        <ul>
            <li><div>Do NOT trigger me</div></li>
            <li><div>Do NOT trigger me</div></li>
        </ul>
    </li>
</ul>

我只想在用户单击第一级的列表元素而不是第二级时调用一个函数。关于文档和谷歌,使用选择器中的“>”应该很容易:

$(document).ready(function(){
  $("div#master").on("click", "ul > li", function (){
    alert($(this).text());
  });
});

但正如您在 JSFiddle http://jsfiddle.net/kQH4x/上看到的那样,当单击子列表项时,它也会触发触发器。

stackoverflow 上的答案有一个类似的问题(请参阅此处https://stackoverflow.com/a/977891/1099519)由于某种原因似乎不起作用?

谢谢

4

2 回答 2

3

它也会在子列表上触发,因为您没有指定ul它应该从哪个开始。子列表具有相同的结构,因此也符合选择器的条件。

要解决此问题,请将主列表父元素添加到选择器,因此:

$(document).ready(function(){
   $("div#master").on("click", ">ul>li>div", function (){
      alert($(this).text());
   });
});

小提琴:http: //jsfiddle.net/kQH4x/6/

于 2014-01-24T14:21:57.610 回答
0

尝试这个,

  $(function(){
       $("div#master > ul>li>div").click(function (){
          alert($(this).text());
       });
    });
于 2014-01-24T14:32:08.973 回答