执行锚点的href,但不执行底层DIV的"onclick"?

Kru*_*lur 0 html javascript

请参阅下面的代码/ HTML剪辑.我有一个带有"href"的锚点,它位于带有"onclick"事件处理程序的DIV中.如果我单击锚点,浏览器将打开一个新选项卡并执行"onclick".如果用户点击了锚点,我想要执行"onclick".在锚的onclick中返回"false"会破坏href被触发.这里有什么解决方案?

<html>
<head>
<script>
function clicky()
{
alert("Click!");
}
</script>
</head>
<body>
<div id="adiv" onclick="clicky()" style="border:1px solid black;background-color:red;width:400px;height:300px;">
<a href="http://www.gohere.but.dont.execute.onclick.com" target="_blank">a link</a>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

勒内

Inv*_*con 7

最简单的方法是停止onclick事件从anchor标记到div的传播(冒泡).只需将一个onclick事件添加到锚点并将处理程序设置为:

event.cancelBubble = true; if(event.stopPropagation) { event.stopPropagation(); }
Run Code Online (Sandbox Code Playgroud)

这是跨浏览器代码.在IE,FF,Chrome,Safari中测试过.所以你的代码现在应该是这样的:

<html>
<head>
<script>
function clicky()
{
alert("Click!");
}
</script>
</head>
<body>
<div id="adiv" onclick="clicky()" style="border:1px solid black;background-color:red;width:400px;height:300px;">
<a href="http://www.gohere.but.dont.execute.onclick.com" target="_blank" onclick="event.cancelBubble = true; if(event.stopPropagation) { event.stopPropagation(); }">a link</a>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)