javascript - 点击目标

标签 javascript events target

看这段代码:

<div>
    <a href = "#"><span>Click me MAN !</span></a>
</div>

<script type = "text/javascript">
    window.onload = function () {
        document.body.addEventListener ("click", function (event) {
            var target = event.target;

            alert ("Returns \"" + target.nodeName + "\". Just want \"" + target.parentNode.nodeName + "\"")
        }, false);
    }
</script>

您可以在“链接”中看到元素“span”,当单击“链接”时,当前目标是相同的“span”。 “event.target”如何返回“link”而不是“span”。

谢谢,不,我不想使用“parentNode”。

最佳答案

使用您的方法,您要么必须手动向上遍历 DOM,直到遇到 <a>。元素或将监听器附加到链接本身并使用 this .

尽量减少事件监听器的数量通常是个好主意,下面是一个如何遍历 DOM 的示例。请注意,事件监听器在 IE 中不起作用,IE 不支持 addEventListener() DOM节点的方法。

实例:http://jsfiddle.net/timdown/pJp4J/

function getAncestor(node, tagName) {
    tagName = tagName.toUpperCase();
    while (node) {
        if (node.nodeType == 1 && node.nodeName == tagName) {
            return node;
        }
        node = node.parentNode;
    }
    return null;
}

document.body.addEventListener("click", function(event) {
    var target = getAncestor(event.target, "a");
    if (target !== null) {
        alert(target.nodeName);
    }
}, false);

关于javascript - 点击目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642866/

相关文章:

javascript - Javascript 中的事件对象,查找信息时遇到问题

android - 是否可以为 Xcode Target 等 Android 项目创建多个目标

objective-c - 具有多个目标的 Objective C 到 Swift 头文件

javascript - 使用 Node js Express 登录帖子事件抛出 401 错误

C# 如何在一天中的特定时间触发事件?

node.js - 如何为Node中的对象实例添加事件能力?

Angular4 - 样式绑定(bind)中的计算

使用 var 分配给变量的 Javascript 函数

javascript - 调用 Jquery 对话框并传递消息字符串

javascript - ember.js 教程 : is really working Mirage addon?