Javascript 捕捉绝对位置元素上的单击事件
我有div,上面是带有绝对位置div的链接。我需要捕捉链接上的点击事件并获得“href”属性。我不想只使用普通JavaScript库。可能吗 我尝试过类似的东西,但它只捕捉到链接外的divJavascript 捕捉绝对位置元素上的单击事件,javascript,Javascript,我有div,上面是带有绝对位置div的链接。我需要捕捉链接上的点击事件并获得“href”属性。我不想只使用普通JavaScript库。可能吗 我尝试过类似的东西,但它只捕捉到链接外的div window.addEventListener('load', function () { document.addEventListener('click', $openExternalLink, false); }); function $openExternalLink(e) { a
window.addEventListener('load', function ()
{
document.addEventListener('click', $openExternalLink, false);
});
function $openExternalLink(e) {
alert(e.target.tagName);
}
HTML:
文本
也许这个结构很糟糕,不幸的是我无法影响它
多谢各位
document.onload = function() {
var myLink = document.querySelector("a");
myLink.addEventListener("click", function() {
var href = this.href;
})
}
只需将事件侦听器添加到您的锚,然后使用this.href
(或this.getAttribute(“href”))获取其href
属性
我想你对JavaScript相当陌生吧?如果是这样,一定要去看看
另外,我刚刚想到的一点是,如果您想使用函数处理链接(看起来您是这样做的),请执行以下操作:
document.onload = function() {
var myLink = document.querySelector("a");
myLink.addEventListener("click", function(e) {
e.preventDefault(); // Makes the event prevent the default link behaviour
var href = this.href;
externalLink(href);
})
}
externalLink(href) {
// Do something with your link.
// perhaps, window.location = href (or whatever)
}
要用于页面上的所有链接(根据您的评论),请执行以下操作:
document.onload = function() {
var links = document.querySelectorAll("a");
var i = 0, count = links.length;
for (i; i < count; i++) {
links[i].addEventListener("click", function(e) {
e.preventDefault();
externalLink(this.href);
})
}
}
externalLink(href) {
// Do something with your link.
// perhaps, window.location = href (or whatever)
}
document.onload=function(){
var links=document.querySelectorAll(“a”);
变量i=0,计数=links.length;
对于(i;i
使用
querySelectorAll
以文档中的所有锚定标记为目标,然后对它们进行循环,为每个锚定标记添加一个事件侦听器。请记住,如果您还想支持IE8,这个脚本需要一些调整。(使用attachEvent(“onclick”…
而不是addEventListener
,并在事件中用链接[i]
替换此
)target属性是被单击的元素-在您的例子中是div
。您可以使用e.target.parentNode.href
获取链接href,或者只需将单击处理程序附加到链接并查找e.currentTarget.href
。为什么这个.getAttribute(“href”)
与this.href
相比?嗯,我只是习惯了某些事情,但你是对的。this.href
同样有意义,而且更短。我将把它换掉。很好,但是,它只适用于页面上的第一个链接。对所有链接有任何简单的修改吗?是的,使用querySelectorAll
并对它们进行循环。我我会把它加到我的回答中。
document.onload = function() {
var links = document.querySelectorAll("a");
var i = 0, count = links.length;
for (i; i < count; i++) {
links[i].addEventListener("click", function(e) {
e.preventDefault();
externalLink(this.href);
})
}
}
externalLink(href) {
// Do something with your link.
// perhaps, window.location = href (or whatever)
}