0
document.getElementById("img1").addEventListener("click", function(event){
  event.preventDefault()
});

我已经尝试了上面的 JavaScript,它确实禁用了链接,同时保留了我想要的右键和中键单击操作。

但是,我有很多链接,每个链接都有一个动态创建的 ID,我不知道如何将 ID 传递给上面的代码。

我尝试了以下方法:

HTML:

<a id="img' . $row["idImage"] . '" onClick="passID(this.id)" href="images/img01"><div></div></a>

JavaScript:

function passID(linkId) {
  var imgid = linkId;
  alert(imgid);
  document.getElementById(imgid).addEventListener("click", function(event) {
    event.preventDefault()
  });

但它不会禁用链接。我放了一个警报,它确实返回了点击链接的正确 ID,但没有禁用它,所以我对如何从这里开始有点茫然。

4

2 回答 2

0

如果您可以使用事件处理程序属性,只需使用即可onclick="return false;"

<a href="https://www.google.com/" onclick="return false;">Clicking me wont redirect.</a>

如果要使用addEventListener(),则需要能够区分不应重定向的元素。您可以使用选择器a[id^="img"]选择所有id属性以 . 开头的锚元素img
然后你需要选择所有应用的元素,循环它们,并添加事件监听器。

document.querySelectorAll('a[id^="img"]').forEach(anchorElement => {
  anchorElement.addEventListener('click', event => event.preventDefault());
});
<a href="https://www.google.com/" id="img1">Link 1</a>
<a href="https://www.google.com/" id="img2">Link 2</a>

尽管将类添加到要防止重定向并选择它们的锚标记中可能会更干净且更不容易出错。

document.querySelectorAll('.dont-redirect').forEach(anchorElement => {
  anchorElement.addEventListener('click', event => event.preventDefault());
});
<a href="https://www.google.com/" class="dont-redirect">Link 1</a>
<a href="https://www.google.com/" class="dont-redirect">Link 2</a>

于 2021-05-06T09:07:29.813 回答
0

您可以删除不必要的 onClick 事件处理程序并直接使用此脚本显示 ID:

$(document).on('click', 'a', function () {
  // event.preventDefault();
  alert(this.id);
});
<div class="container">
  <a id="displayed-id" href="images/img01">Click</a>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

于 2021-05-06T09:06:24.380 回答