美好的一天!请帮忙,我使用嵌套如果在嵌套元素中触发click事件,则调用该函数和外部父元素。如何为内部举办一次活动?
HTML
<ul>
<li><a href="#">Item</a></li>
<li><a href="#">Item 2</a>
<ul>
<li><a href="#">Subitem 1</a></li>
<li><a href="#">Subitem 2</a></li>
<li><a href="#">Subitem 3</a></li>
</ul>
</li>
</ul>
Jquery的
$("ul li").on("click", function(e){
alert($("a", this).text());
});
答案 0 :(得分:2)
最简单的方法是阻止事件传播到父元素
$("ul li").on("click", function(e){
e.stopPropagation();
alert($("a", this).text());
});
其他一些答案说使用return false
。我不建议除非你试图阻止链接被遵循。 e.stopPropagation
是副作用最少的方式。
答案 1 :(得分:2)
您可以收听li
a
$("ul li a").on("click", function(e){
alert($(this).text());
return false;
});
此外,return false
此处会停止传播。
答案 2 :(得分:1)
您需要阻止进一步传播当前事件。所以试试这个
$("ul li").on("click", function(e){
alert($("a", this).text());
e.stopPropagation()
});
答案 3 :(得分:0)
您可以使用事件的stopPropagation
方法,这将阻止事件冒泡DOM树:
$("ul li").on("click", function(e){
e.stopPropagation();
alert($("a", this).text());
});
这是一个更新的jsfiddle:http://jsfiddle.net/fSkLb/5/
答案 4 :(得分:0)
$("ul li").on("click", function(e){
alert($("a", this).text());
return false;
});
return false
避免了事件泡沫。 stopPropagation
也可以这样做。
答案 5 :(得分:0)
我想我找到了答案......
$("ul li").on("click", function(e){
e.stopPropagation();
alert($("a", this).text());
});