javascript - 如何通过单击按钮从 JS 中的多个类中访问某个类
问题描述
我对如何从 JavaScript 中的多个类名访问一个元素有一定的疑问。例如,这是我的代码。
<html>
<head><title>Check</title>
</head>
<body>
<div class="div"><button type ="submit">a</button></div>
<div class="div"><button type ="submit">b</button></div>
<div class="div"><button type ="submit">c</button></div>
</body>
</html>
当我单击 b 的按钮时,我希望选择第二个 div 类。谁能帮我解决这个问题?我对这个问题完全感到震惊。
解决方案
如果结构始终相同,则可以使用Node.parentElement
到达那里,从引用开始<button>
:
document.addEventListener('click', ({ target }) => {
if (target.tagName !== 'BUTTON') return;
console.log(target.parentElement.outerHTML);
});
<div class="div"><button type ="submit">a</button></div>
<div class="div"><button type ="submit">b</button></div>
<div class="div"><button type ="submit">c</button></div>
或者,如果不同按钮的结构可能不同,则需要类似 jQuery 的.closest()
. 您可以使用循环或递归函数来实现类似的功能,Element.matches()
如果您不使用 jQuery:
function closest(element, selector) {
if (!element || element === document) return null;
if (element.matches(selector)) return element;
return closest(element.parentElement, selector);
}
document.addEventListener('click', ({ target }) => {
if (target.tagName !== 'BUTTON') return;
console.log(closest(target, '.div').outerHTML);
});
<div class="div"><button type ="submit">a</button></div>
<div class="div"><span><button type ="submit">b</button></span></div>
<div class="div"><span><span><button type ="submit">c</button></span></span></div>
推荐阅读
- python - 为多个数据帧和返回语句进行计算的更好方法?
- docusignapi - 批量填写合同表格
- kubernetes - 您可以在 helm 测试模板文件中包含超时选项吗?
- c# - VS Extension VSIX 保存所有未保存的文档
- algorithm - 关于合并两个排序列表的问题(leetcode 问题 21)
- google-apps-script - 使用 Google 表格控制 Google 日历
- python - 我在 Windows 10 系统上最近安装的 python+otree 组合上使用“git push heroku master”时遇到了一些困难
- java - Thymeleaf 中的动态 HTML
- javascript - 无论用户输入是什么,对用户输入生成随机答案的游戏都会生成相同的答案
- javascript - 图像轮播