假设现在有十个div,类名都是div1,现在给所有div都绑定同一个事件,当点击其中一个div里面的div2,只有这个div2的兄弟节点类名是div3的div会响应事件
时间: 2024-04-15 10:31:55 浏览: 100
JavaScript给每一个li节点绑定点击事件的实现方法
要实现这个需求,您可以使用事件委托结合条件判断来实现。事件委托是将事件绑定在父元素上,然后通过条件判断来确定是否触发子元素的事件。
以下是一个示例代码:
```javascript
// 获取所有的 div 元素
const divs = document.querySelectorAll('.div1');
// 给父元素绑定点击事件
document.addEventListener('click', function(event) {
// 检查点击的元素是否为 div2 元素
if (event.target.classList.contains('div2')) {
// 查找 div2 的兄弟节点是否有类名为 div3 的 div 元素
const siblingDiv3 = event.target.nextElementSibling;
if (siblingDiv3 !== null && siblingDiv3.classList.contains('div3')) {
// 执行相应的操作,例如改变背景色
siblingDiv3.style.backgroundColor = 'red';
}
}
});
```
在这个示例中,我们首先通过 `querySelectorAll` 方法获取所有类名为 `div1` 的 div 元素,并将其存储在 `divs` 变量中。然后,我们给整个文档对象 `document` 绑定了一个点击事件。当点击事件发生时,会触发回调函数,并检查点击的元素是否包含类名为 `div2`。如果是,则继续检查 div2 的兄弟节点是否有类名为 `div3` 的 div 元素。如果有,则执行相应的操作,例如改变背景色。
这样做的好处是,无论添加多少个 div 元素,只需要绑定一个事件,只有被点击的 div2 元素的兄弟节点中有类名为 `div3` 的 div 元素会触发相应的操作。其他的 div 元素不会受到影响。
阅读全文