在href属性上触发事件时获取链接元素

时间:2018-10-11 10:09:04

标签: javascript html

我使用的库可以让我在链接上定义 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/

您有解决方案吗?

1 个答案:

答案 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>