jquery - 如何在 href JavaScript 函数中获取调用元素?
我有一个锚点标签元素出现在 HTML 中,像这样:
<a href="javascript:handleEvent(this, 'abc')"></a>
现在在 JavaScript 函数中,我写了:
function handleEvent(sourceElement, txt) {
console.log(sourceElement);
}
在这种情况下,被控制的元素是窗口。我尝试了 sourceElement.document.activeElement,但在 Chrome 中似乎不起作用,它显示为 body 元素。
我无法将锚标签的结构更改为 'onClick' 函数,因为这是来自其他来源的。是否有办法在这种情况下找到调用的元素?
答案#1
这里的真正答案是修改 HTML,而你说你做不到。如果可以的话,我会对此提出反对。如果你正在编写这个函数,并且函数名称在 HTML 中,为什么你不能修改 HTML 呢?
但如果你真的、真的做不到,你可以在 DOM 加载后更新它:
var list = document.querySelectorAll('a[href^="javascript:"]');
var x, link;
for (x = 0; x < list.length; ++x) {
link = list[x];
link.onclick = new Function(link.href.substring(11));
link.href = "javascript:;";
}
实时副本 | 实时源
这相当调皮,因为它使用了 Function 构造函数(这很像 eval),但 如果 你信任 HTML 的来源,那应该没问题。
当然,如果你一开始就不必使用 href 中的内容,只需在上面的代码中挂接你的事件处理程序,并且不要使用 new Function。
答案#2
尝试像这样,使用 jQuery
只需使用你的选择器选择链接标签
$(function(){
var href = $('a').attr('href');
href = href.replace('javascript:','');
$('a').attr('href','#');
$('a').attr('onclick',href);
})
这只是一个权宜之计。
