我对原始javascript(用于处理jQuery)相当新。我需要抓住几个链接上的点击,阻止默认操作,然后根据链接href执行某些操作。
某些链接是直接<a href="example.com">Lorem</a>
,但其他链接可能包含其他html元素(图片,跨度...)。我将相同的事件处理程序绑定到所有必需的链接。我使用的是变通方法功能,但在Chrome中它使用addEventListener
,useCapture
为false。
在我的事件处理程序中,我使用event.target.getAttribute('href')
来获取链接指向的位置。这在处理第一种链接时有效,但在单击图像或跨度时则不起作用,因为event.target是图像或跨度,而不是链接。我猜这与事件冒泡有关,但我不太确定解决方案是什么。
答案 0 :(得分:3)
如果您使用事件委托(推荐),即只将一个事件处理程序绑定到文档根目录,那么您必须从event.target
遍历DOM并查看它是否在A
元素内:
var target = event.target;
while (target && target.nodeName !== 'A') {
target = target.parentNode;
}
if (target) {
// click was inside link
}
如果将处理程序直接绑定到每个A
元素,则可以使用this
而不是event.target
来引用处理程序绑定的元素。 Read more about this
in event handlers