我的代码如下所示:
<li class="arrow">
<div>
<a href="javascript:void(0);" class="anchor">remove</a>
</div>
</li>
我使用deligate()jquery方法绑定我的元素(因为元素动态显示)
$obj.delegate(".arrow", "click", function() {
alert("clicked on arrow");
});
$obj.delegate(".anchor", "click", function(event) {
event.stopPropagation();
alert("anchor clicked");
});
我的问题是,当我点击“.anchor”时,两个事件都会发生。任何人都可以告诉我如何在这种情况下使用event.stopPropagation()?我尝试了上面的但没有工作。还有其他办法吗?
编辑:我尝试调用event.isPropagationStopped(),然后返回true。但仍然有两个事件都被称为。
答案 0 :(得分:4)
使用delegate
或live
和stopPropagation
时存在限制。
您在处理程序中返回false
以阻止eventPropagation
和default
尝试
$obj.delegate(".anchor", "click", function(event) {
alert("anchor clicked");
return false;
});
答案 1 :(得分:1)
我的理解是.delegate
和.live
需要return false
。我相信这是因为事件的附加方式 - 不是元素,而是它的祖先。
这是一个例子: http://jsfiddle.net/G3k8Z/