我使用的库可以让我在链接上定义 href 属性。但是此lib不允许定义 onclick 属性。
我想在链接中执行JS函数。因此,我定义了以下行(我知道这是一种不好的做法,但我别无选择):
<a href="javascript:get_element(this);return false;">Link</a>
在此行中,JavaScript函数正确运行。但是我需要获取触发链接单击的元素,并且前面的代码为我提供了Window对象。我知道 href 属性不会触发事件,但我确实需要单击链接。
使用 button 标签很简单,只需使用onclick="get_element(this)"
,但是使用 a 标签我不知道该怎么做。
如果您想尝试示例:https://jsfiddle.net/j8o7qvz2/
您有解决方案吗?
答案 0 :(得分:0)
您可以在生成所有anchor
标签之后添加这段Javascript代码。这将迭代到所有锚标记,然后基于onclick
设置href
属性,然后将href
设置为#
。
var links = document.getElementsByTagName('a');
for(var link of links) {
link.setAttribute('onclick', link.href);
link.setAttribute('href', '#');
}
function get_element(element) {
console.log(element);
}
<a href="javascript:get_element(this);">Link</a>
<br />
<button onclick="javascript:get_element(this);">BUTTON</button>
编辑:
由于您可以使用外部JS,所以也许我将使用jQuery添加答案。
我不知道jQuery是怎么做到的,它也可能会迭代,但这比Vanilla JS更干净,更短。
$('a').attr('onclick', $('a').attr('href'));
$('a').attr('href', '#');
function get_element(element) {
console.log(element);
}
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
<a href="javascript:get_element(this);">Link</a>
<br />
<button onclick="javascript:get_element(this);">BUTTON</button>