如何在delegate()中使用event.stopPropagation()

时间:2011-03-05 09:56:10

标签: javascript jquery events event-bubbling

我的代码如下所示:

<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。但仍然有两个事件都被称为。

2 个答案:

答案 0 :(得分:4)

使用delegatelivestopPropagation时存在限制。

您在处理程序中返回false以阻止eventPropagationdefault

尝试

$obj.delegate(".anchor", "click", function(event) {
     alert("anchor clicked");
     return false;
});

答案 1 :(得分:1)

我的理解是.delegate.live需要return false。我相信这是因为事件的附加方式 - 不是元素,而是它的祖先。

这是一个例子: http://jsfiddle.net/G3k8Z/