繁体   English   中英

借助纯 JavaScript 获取 DOM

[英]Fetching DOM with help of pure JavaScript

我有这个代码:

$("#popupShapes ul li a").click(function () {
     //some code
});

我想将其转换为纯 javascript。

这不起作用,因为 getElementById 期望单个 id:

document.getElementById('popupShapes ul li a')

如何将上面的 jQuery 代码转换为 JavaScript?

改用querySelector ,它接受一个选择器字符串:

document.querySelector("#popupShapes ul li a").addEventListener('click', function () {
     //some code
});

如果您有多个匹配的元素,请改用querySelectorAll

for (const a of document.querySelectorAll("#popupShapes ul li a")) {
  a.addEventListener('click', function () {
     //some code
  });
}

您也可以改用事件委托,但这有时会导致原始代码不同的行为

document.querySelector('#popupShapes').addEventListener('click', (e) => {
  if (!e.target.matches('#popupShapes ul li a')) return;
  // some code
});
$("#popupShapes ul li a").click(function () {
  //some code
});

我会考虑委托:

 document.getElementById("popupShapes").addEventListener("click", function(e) { const tgt = e.target; if (tgt.matches('#popupShapes ul li a')) { e.preventDefault(); console.log(tgt.href) } else console.log(tgt.tagName,"not interesting click") })
 #popupShapes { background-color: teal; padding:1em; }
 <div id="popupShapes"> <ul> <li><a href="x1">X1</a></li> <li><a href="x2">X2</a></li> </ul> <a href="z1">z1</a> </div>

你会这样写的。

const nav = document.querySelectorAll('#popupShapes li a')

nav.forEach((item) => {
    item.addEventListener('click', (e) => {
      console.log('hi', e);
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM