![](/img/trans.png)
[英]How to execute onClick and href both in an anchor tag (<a>)
[英]Execute href of an anchor, but not “onclick” of underlying DIV?
请参见下面的代码/ 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>
雷内
最简单的方法是停止onclick事件从锚标记到div的传播(冒泡)。 只需将一个onclick事件添加到锚点,并将处理程序设置为此:
event.cancelBubble = true; if(event.stopPropagation) { event.stopPropagation(); }
这是跨浏览器的代码。 在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>
给您的锚点一个ID,然后在DIV的onclick
处理程序中,检查事件的目标是否是您的锚点:
<div id="adiv" onclick="clicky(event)" style="border:1px solid black;background-color:red;width:400px;height:300px;">
<a id="link" href="http://www.gohere.but.dont.execute.onclick.com" target="_blank">a link</a>
<script>
function clicky(event) {
event = event || window.event;
var target = event.target || event.srcElement;
if (target == document.getElementById('link'))
return true;
alert("Click!");
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.