我有以下代码
<div class="test-123">
<p>Some Text</p>
<div class="delete"></div>
<div class="edit"></div>
</div>
问题是我必须为这三个元素(test-123,删除和编辑)设置onclick jquery处理程序。我面临以下问题。当我点击删除时,test-123的onclick处理程序也会在删除的onclick处理程序被执行后执行。
有没有办法以某种方式阻止这种情况?
答案 0 :(得分:5)
您正在寻找stopPropogation
event.stopPropagation()
http://api.jquery.com/event.stopPropagation/
$(function(){
$(".test-123").click(function(){
alert("click on div");
});
$(".delete,.edit").click(function(e){
e.stopPropagation()
alert("click on Links");
});
});
注释掉e.stopPropagation
行,看看会发生什么。
答案 1 :(得分:4)
参见jQuery的event.stopPropagation
。这将阻止其他侦听器触发。 e.g,
$("p").click(function(event){
event.stopPropagation();
// do something
});
答案 2 :(得分:0)
正如@paislee所说的传播问题。您是否正在使用jQuery方法“live”,如:
$('selector').live('click', function(){
//The actions
});
我认为您应该检查方法“委托”的使用,即“强制”您设置顶部父级必须应用闭包的元素。它比任何方式都更安全(甚至点击事件)。