javascript - 单击父项,忽略其子项

标签 javascript jquery dom

<分区>

Possible Duplicate:
jQuery: click function exclude children.

我有两个 div,像这样:

<div id="parent" style="width: 100%; height: 100%; background-color:red;" />
    <h1>I'm the parent!</h1>
    <div id="child" style="width: 300px; height: 200px; background-color:yellow;">
        </h2>..and I'm the child!</h2>
    </div>
</div>

此外,我还有以下 JavaScript 代码:

$(document).ready(function(){
    $('#parent').click(function(){
        alert('Parent was clicked');
    });
});

问题是,如果我点击 child ,事件就会被触发。我如何才能将此事件仅限于父级?

编辑:只是为了澄清;我希望当用户点击红色的任何地方时触发这个 Action 。正如评论中所说; h1 不是父级。 Tjirp 的回答起到了作用,答案中有很多此解决方案的工作变体。

最佳答案

这应该可行

$(document).ready(function() {
    $('#parent').click(function(e) {
        if (e.target == this) { 
            alert('Parent was clicked');
        }
    }
}

这样您就不必将任何东西绑定(bind)到您的 child 身上。点击事件被传播到您的点击处理程序,它会检查点击事件的目标是否确实是您添加事件的元素。

编辑:我是对的。这不是最有效的方法,Alessandro Minoccheri 的回答应该更快。我用他更新了我的代码。

关于javascript - 单击父项,忽略其子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627514/

相关文章:

jquery - 使用 .prev() 设置当前元素的 css

javascript - 调用 iFrame 按钮,然后调用父按钮

JavaScript 基于复选框切换 DIV

python - XML 解析 - ElementTree vs SAX 和 DOM

javascript - 是否可以使用 Express 和 React 预渲染服务器端代码?

JavaScript 重定向连接

javascript - 如何将在 div 元素中工作的工具提示添加到我表中的 li 元素?

javascript - 如何使用下拉选择填充文本字段

javascript - Redux 调度不会从数组中删除项目

javascript - 如何将 span 的内容复制到它的 title 属性中?