如何在事件侦听器中将父节点与其所有子节点关联?jQuery/JavaScript

如何在事件侦听器中将父节点与其所有子节点关联?jQuery/JavaScript,javascript,jquery,html,parent-child,event-listener,Javascript,Jquery,Html,Parent Child,Event Listener,我对JavaScript不是很在行,因为我只是一年多的业余爱好,所以如果这个问题看起来很愚蠢,请原谅我。我也不太熟悉StackOverflow 无论如何,我正在尝试将事件侦听器放在动态创建的具有子节点的元素上 例如: <div class="div"> <div class="div2"> Content in Div2 </div> <div class="div3"> Content

我对JavaScript不是很在行,因为我只是一年多的业余爱好,所以如果这个问题看起来很愚蠢,请原谅我。我也不太熟悉StackOverflow

无论如何,我正在尝试将事件侦听器放在动态创建的具有子节点的元素上

例如:

<div class="div">
    <div class="div2">
         Content in Div2
    </div>
    <div class="div3">
         Content in Div3
    </div>
    Content in Div
</div>
但是,如果我希望在单击
div2
div3
时运行该代码,该怎么办?我知道我可以循环浏览div并说:

document.querySelector('body').addEventListener('click',function(e){
    if (e.target.className === "div" || e.target.parentNode.className === "div"){
        //Run this code
    }
}); 
然而,我的实际代码中有很多东西,看起来就像一团乱麻。有没有更理想的方法


我觉得我缺少了一些非常简单的东西

,因为元素是在运行时创建的,在就绪状态下为它们注册事件时它们将不可用,因此在这种情况下,您必须使用

试试看


在上面的代码中,我使用了,这样您就可以轻松地选择类名以div开头的元素,并为其编写事件。

如果您希望类为“div”的div以及其中的所有内容都可以单击,那么您只需执行以下操作:

$('.div').on('click', function () {
    //DO SOMETHING
});
以上内容将使容器div和其中的所有内容都可以单击

如果您希望所有的div都只能单击,那么您可以这样做:

$('.div div').on('click', function () {
    //DO SOMETHING
});

这里有一个JSFiddle来演示:

我们能否为动态生成的元素和绑定事件使用特定的类名?@RachitDoshi是的,我们可以这样做,但OP的要求有点不同。
$('.div').on('click', function () {
    //DO SOMETHING
});
$('.div div').on('click', function () {
    //DO SOMETHING
});