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