在Javascript中,如何在父事件处理程序中阻止对子元素的默认

Ben*_*Lee 5 javascript jquery javascript-events preventdefault

假设我有这样的HTML:

<div>
    <a href="http://google.com">Google</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的事件处理程序(假设我有jQuery可用):

$('div').on('click', function(ev) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

是否可以从该事件处理程序中阻止<a>链接的默认操作?或者为时已晚?(换句话说,我需要<a>或更低的位置附加一个事件以防止默认的链接操作,或者是否可以在上面的处理程序中停止它).

如上所述,如果解决方案需要,我可以使用jQuery.

Jam*_*son 8

这肯定会奏效:

$('div').on('click', "a", function(e) {
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://jsfiddle.net/xvKNC/1/

坚持,稍等.这似乎对我来说在Chrome中运行良好

// prevent default on every click in the div
$('div').on('click', function(ev) {
    ev.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

查看更新的小提琴:http: //jsfiddle.net/xvKNC/2/


str*_*rah 6

这似乎有效:

$('div').on('click', function(ev) {
    ev.stopImmediatePropagation();
    ev.preventDefault();

});
Run Code Online (Sandbox Code Playgroud)

JSFiddle: http: //jsfiddle.net/3yFfC/