如何防止单击锚点元素内的图像时出现链接行为
How can I prevent link behavior on clicking an image inside an anchor element?
我有一个类似的代码:
<a href='link.html'>goto link page <img src='images/edit.gif' alt='Dont Go, just edit' onclick='doEdit()'></a>
现在,如果你点击文本,我希望href链接能正常工作,但如果你点击图像,它应该做一些其他事情,而不是转到链接。
还有一个限制,我不能编辑链接或其文本,我唯一可以完全控制的是img标记及其所谓的onclick函数。所以我必须阻止链接从img标记中继续。
任何帮助都将不胜感激。
当目标是<img>
时,仅点击事件上的preventDefault
yourAnchor.addEventListener('click', function (e) {
if (e.target.tagName === 'IMG')
e.preventDefault();
});
现在,如果你点击文本,我希望href链接能正常工作,但如果你点击图像,它应该做一些其他事情,而不是转到链接。
正确的方法是不要将img
放在链接中。
然而,如果你真的想这么做,请将onclick更改为:
onclick='doEdit(event)'
在doEdit
:中
function doEdit(event) {
if (event.stopPropagation) {
event.stopPropagation(); // Standard
}
else {
event.cancelBubble = true; // Old IE
}
// ...your img logic...
}
这将防止click
事件冒泡到链接。您需要对stopPropagation
进行测试,因为IE8和早期版本没有它(或preventDefault
),而是使用属性(cancelBubble = true
用于stopPropagation
,returnValue = false
用于preventDefault
)。(尽管XP已经报废,但我们可能还要使用IE8至少一年,甚至更长时间…)
将event
传递到doEvent方法调用,类似于:
<a href='link.html'>goto link page <img src='images/edit.gif' alt='Dont Go, just edit' onclick='doEdit(event)'></a>
然后,您可以调用event.preventDefault()
取消活动并做自己的事情,类似于以下内容:
function doEdit(event){
// your code here
event.preventDefault();
}
DEMO-使用事件对象取消事件。
我不太确定你的意思,但如果你希望文本有链接,图像有onclick事件
文本
<a href='link.html'>goto link page</a>
图像
<img src='images/edit.gif' alt='Dont Go, just edit' onclick='doEdit()'></img>
我最初的想法是简单地从链接标签之间删除图像标签。
<a href='link.html'>goto link page</a>
<img src='images/edit.gif' alt='Dont Go, just edit' onclick='doEdit()'/>
有没有更多的限制不允许你做这样的事情?
相关文章:
- 如果显示当前图像,则禁用链接
- Javascript图像链接
- 更改标记.js图像/链接表达式
- 如何使用javascript从文件夹中获取图像并发布直接链接
- 当页面包含指向一个图像的多个链接时,fancyBox会复制缩略图辅助图像
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- javascript 将 IMG 标签中的图像转换为 标签中的实际链接图像
- 一键在一个窗口中打开两个不同的链接图像
- 如何使用 jquery 调整超链接图像的大小
- 重写:导航链接图像按钮效果
- 切片盒,链接图像
- 悬停时更改链接图像
- 在Javascript中使用href=mailto链接图像
- 鼠标悬停时链接图像
- 链接图像到网页链接
- 超链接图像不显示Chrome扩展
- 基于ALT标签的链接图像
- 在基于活动链接图像的导航中改变背景位置
- 将文本和超链接图像添加到表格单元格
- 如何在此代码片段中定位链接图像而不是链接文本