Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,如何从父事件处理程序中防止子元素的默认值_Javascript_Jquery_Jquery Events_Preventdefault - Fatal编程技术网

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

在Javascript中,如何从父事件处理程序中防止子元素的默认值,javascript,jquery,jquery-events,preventdefault,Javascript,Jquery,Jquery Events,Preventdefault,假设我有如下HTML: <div> <a href="http://google.com">Google</a> </div> 是否可以从该事件处理程序中阻止链接的默认操作?还是太晚了?(换句话说,我是否需要在或更低版本上附加事件以防止默认链接操作,或者是否可以在上述处理程序中停止该操作) 如上所述,如果解决方案需要,我可以使用jQuery。这肯定会奏效: $('div').on('click', "a", function(e) {

假设我有如下HTML:

<div>
    <a href="http://google.com">Google</a>
</div>
是否可以从该事件处理程序中阻止
链接的默认操作?还是太晚了?(换句话说,我是否需要在
或更低版本上附加事件以防止默认链接操作,或者是否可以在上述处理程序中停止该操作)


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

这肯定会奏效:

$('div').on('click', "a", function(e) {
    e.preventDefault();
});
这是一把小提琴:

等一下。这在Chrome中对我来说似乎很好

// prevent default on every click in the div
$('div').on('click', function(ev) {
    ev.preventDefault();
});
请参阅更新的小提琴: 这似乎有效:

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

});

JSFiddle:

谢谢,但不幸的是,在我正在处理的情况下,授权没有帮助(或者说,我可以使用一些复杂的授权技巧来解决这个问题,但我希望不必这样做)。啊,对不起。也许你可以简化它?我的小提琴可能有助于显示事情发生的顺序,因为它使用hashchange来检测正在通过的链接。你能检查event.target.nodeName中的vs DIV吗?
$('div').on('click', function(ev) {
    ev.stopImmediatePropagation();
    ev.preventDefault();

});