我在apex 4.2中有一个从数据库生成的树:
<ul id="ltr">
<li id="00010" class="open"><a href="" style="" class=""><ins> </ins>Root</a>
<ul><li id="00110" class="open"><a href="" style="" class=""><ins> </ins>CHILD</a>
<ul><li id="00563" class="open"><a href="" style="" class=""><ins> </ins>CHILD</a>
<ul><li id="02057" class="leaf"><a href="" style="" class=""><ins> </ins>LAST CHILD</a></li>
</ul></li></ul>
</li>
</ul>
</li>
</ul>
我使用click函数来选择节点的id,class leaf没有问题,但是open class选择了parent和parent id,如何选择被点击的节点的id?
$(".leaf").click(function(){
alert($(this).attr('id'));
});
$(".open").click(function(){
alert($(this).attr('id'));
});
答案 0 :(得分:1)
您需要使用stopPropagation(),否则在单击内部元素时,您的事件侦听器将对所有三个嵌套元素执行。而且你不应该使用数字作为ID。
这是一个工作小提琴:
$(document).ready(function(){
$(".open").click(function(e){
e.stopPropagation();
alert($(this).attr("id"));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ltr">
<li id="a00010" class="open">
<a href="" style="" class=""><ins> </ins>Root</a>
<ul>
<li id="a00110" class="open"><a href="#"><ins> </ins>CHILD</a>
<ul>
<li id="a00563" class="open"><a href="#"><ins> </ins>CHILD</a>
<ul>
<li id="a02057" class="leaf"><a href="#"><ins> </ins>LAST CHILD</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
编辑:如果要选择.open和.leaf,只需将选择器更改为:
$(".leaf, .open")