Javascript 事件委托(delegate)问题与目标

标签 javascript

我有这个 HTML(示例):

<div class="a">
  <div class="b">
    <img src="...">
    <p>text</p>
  </div>
  <div class="b">
    <img src="...">
    <p>text</p>
  </div>
  <div class="b">
    <img src="...">
    <p>text</p>
  </div>
</div>

我有大约 1000 个 div.b。我需要将事件监听器添加到 div.a 并定位 div.b 子项。

但是,event.target 也可能是 imgp:

document.querySelector('.a').addEventListener('click', handler);

function handler(e){
   console.log(e.target); //either .b or img or p depending on where I click
}

我需要这样的东西(jQuery):

$('.a').on('click', '.b', function(){
   //code
});

最佳答案

您可以像在 CSS 文件中一样扩展查询选择器,以选择类的子级。

以下代码在单击 SO 上的搜索栏时进行了测试。你可以在控制台上尝试一下

document.querySelector('.top-bar .f-input').addEventListener('click', function(e){
    console.log(e)
})

关于Javascript 事件委托(delegate)问题与目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418461/

相关文章:

javascript - 传递对象时防止在 PureComponent 上重新渲染

javascript - 在 React Navigation 中将 Prop 传递给自定义抽屉导航器

javascript - 加载最后 3 个和每个新子项

javascript - 从 Google Maps Javascript 中删除标记

javascript - 尝试使用正则表达式匹配我们网站中的描述

javascript - 使用 canvas.toBlob 污染 Canvas

javascript - 单击登录链接时如何显示登录表单

javascript - 有人可以澄清我这个 try-catch block ( undefined variable )有什么问题吗? (选择性捕捉,JS)

javascript - 请求问题 : Uncaught SyntaxError: Unexpected token/

javascript - "react-native-fade-in-view"导致 "Cannot read property ' func ' of undefined"错误