首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addEventListener控件

addEventListener控件
EN

Stack Overflow用户
提问于 2020-07-10 03:59:27
回答 1查看 52关注 0票数 1

(很抱歉截图,出于某种原因,它不允许我上传代码)

在我的JS中实现addEventListener。

代码语言:javascript
复制
console.log(event.target)

根据您按下按钮的哪一部分,我会得到不同的结果(因为徽标或实际的按钮)。如何让JS忽略logo,只返回button元素?

代码语言:javascript
复制
<div class="images">
    <div class="pic_01">
        <div class="column">
            <img class="img" id="1" src="photo/1.jpg">
            <button id="button1" class="like_button" type="button">
                <img class="like_logo" src="images/like.png">&nbsp;
                <div>2
                </div>
            </button>
        </div>
    </div>
</div>

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 04:20:14

您应该使用event.currentTarget而不是event.target。即使单击子节点,您也将获得事件侦听器附加到的节点。

您可以递归地检查父节点,以查看是否单击了按钮或子元素。

代码语言:javascript
复制
 document.querySelector('.images').addEventListener('click', function (event) {
        var button = handleClickEvent(event.target, event.currentTarget);
        if (button) {
            alert('clicked button');
        }
    }, false);

    function handleClickEvent(node, targetNode) {
        if (node.tagName == 'BUTTON') {
            return node;
        }
        else if (node == targetNode) {
            return;
        }
        return handleClickEvent(node.parentNode, targetNode);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62822759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档