1

我的代码在 html 中如下所示:

<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。但仍然调用了这两个事件。

4

2 回答 2

4

delegate使用或live和时有限制stopPropagation

您返回false处理程序以防止两者eventPropagationdefault

尝试

$obj.delegate(".anchor", "click", function(event) {
     alert("anchor clicked");
     return false;
});
于 2011-03-05T10:15:12.523 回答
1

我的理解是 with.delegate.liveyou need to return false。我相信这是因为事件是如何附加的——不是附加到元素,而是附加到它的祖先。

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

于 2011-03-05T10:19:44.120 回答