Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript仅将EventListener添加到主容器和第二个子元素_Javascript_Html_Addeventlistener - Fatal编程技术网

JavaScript仅将EventListener添加到主容器和第二个子元素

JavaScript仅将EventListener添加到主容器和第二个子元素,javascript,html,addeventlistener,Javascript,Html,Addeventlistener,如何仅向主容器及其第二个子元素添加事件?在本例中,它是id=“container”和所有class=“secondChild” 我当前要做的是将侦听器添加到div中的所有元素 ele = document.getElementById('container'); ele.addEventListener('mousedown',myFunction) <div class="main" id="container"> <div

如何仅向主容器及其第二个子元素添加事件?在本例中,它是
id=“container”
和所有
class=“secondChild”

我当前要做的是将侦听器添加到
div中的所有元素

ele = document.getElementById('container');
ele.addEventListener('mousedown',myFunction)

<div class="main" id="container">
    <div class="firstChild">
        <div class="secondChild">
            <div class="inner">
                <div class="innerOne">This is Element 1</div>
                <div class="innerTwo">This is Element 2</div>
            </div>
        </div>
        <div class="secondChild">
            <div class="inner">
                <div class="innerOne">This is Element 3</div>
                <div class="innerTwo">This is Element 4</div>
            </div>
        </div>
        <div class="secondChild">
            <div class="inner">
                <div class="innerOne">This is Element 5</div>
                <div class="innerTwo">This is Element 6</div>
            </div>
        </div>
    </div>
</div>
ele=document.getElementById('container');
ele.addEventListener('mousedown',myFunction)
这是元素1
这是元素2
这是元素3
这是元素4
这是元素5
这是元素6

您可以使用事件委派:

发件人:

事件委派利用了 JavaScript事件:事件冒泡和目标元素。当 事件在元素上触发,例如鼠标单击 按钮,在该元素的所有 祖先。这个过程称为事件冒泡;这件事引起了轩然大波 从原始元素到DOM树的顶部。目标 任何事件的元素都是原始元素,即 例如,并存储在事件对象的属性中。使用事件 委派可以向元素添加事件处理程序,请稍候 使事件从子元素冒泡出来,并轻松确定 事件起源于哪个元素

因此,您可以将侦听器附加到
#container
(您可以将其附加到任何祖先),并检查事件的目标类(或您想要的任何其他属性)


(或者将类更改为
secondChild
,实际上我不太了解您试图将处理程序附加到的元素。我的英语也很抱歉)

这称为事件委派,这是非常常见的做法。这回答了你的问题吗?他们都是同一个事件监听器?@EmilioGrisolía是的。所有人都参加了同样的活动
document.getElementById('container').addEventListener('event-name', ev => {

    switch(ev.target.className) {
        case 'inner':
        case 'innerOne':
        case 'innerTwo':
            // do something?
            break;
    }

});