gpt4 book ai didi

javascript - 使用 vanilla JS 的事件委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 07:51:55 41 4
gpt4 key购买 nike

基于以下 HTML 标记:

<div class='list-container'>
<button class="btn">More details </button>
</div>

<div class="details">Lorem ipsum lorem ipsum lorem ipsum</div>

我编写了以下 JavaScript 代码:

let btn = document.querySelector('.btn');
let detailsContainer = document.querySelector('.details');

btn.addEventListener('click', function(e) {
e.preventDefault();
detailsContainer.classList.toggle('visible');
});

但我需要更改 JS 代码以使用事件委托(delegate),以便将 eventListener 添加到 list-container 而不是 btn。

这在 jQuery 中很容易,但我如何在 vanilla JS 中做到这一点?

最佳答案

只需向 .list-container 添加一个监听器,然后在单击时检查 target 是否与 匹配 >.btn:

const detailsContainer = document.querySelector('.details');
document.querySelector('.list-container').addEventListener('click', ({ target }) => {
if (target.matches('.btn')) detailsContainer.classList.toggle('visible');
});
.details { display: none }
.visible { display: block }
<div class='list-container'>container outside of button
<button class="btn">More details </button>
</div>

<div class="details">Lorem ipsum lorem ipsum lorem ipsum</div>

关于javascript - 使用 vanilla JS 的事件委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236332/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com