父级点击事件与子级点击事件重叠

用户名

我希望能够单击父div,但是让子窗体和锚元素不受click事件的影响。

<div class="root">

    <div class="parent">
        <div class="container">
            <a href="/blah"> Hello World</a>
            <div>
                <span> Hello World Again
            </div>
            <form class="form">
                <label> inputs
                <input id="text" type="text"/>
                <textarea></textarea>
                <input id="submit" type="submit"/>
            </form>
        </div>
    </div>

</div>

jQuery的:

$(".parent").on("click", ".container", function() {
    alert("Parent clicked");
});

$(".parent").on("click", "#text", function(event) {
    event.preventDefault();
    alert("Form Input clicked");
});

$(".parent").on("click", "#submit", function(event) {
    event.preventDefault();
    alert("Form Button clicked");
});

 $(".parent").on("click", "a", function(event) {
    event.preventDefault();
    alert("anchor link clicked");
});   

单击任何表单元素(输入,文本区域,按钮提交)或锚标记将不起作用,因为会触发父单击事件。

如何仅对子窗体和锚标记之外的元素进行父单击事件?父级单击事件可以覆盖除这两个元素之外的其他任何子级。

TJ人群

您有两种选择:

  1. click事件挂在相关的子容器上(看起来像是表单)并event.stopPropagation()在处理程序中使用这将阻止事件冒泡到父级。像这样:

    // Option 1: Hook on the form and stop
    // propagation (hooking up "false" does an
    // implicit preventDefault + stopPropagation)
    $(".parent").on("click", "form", false);
    
  2. 在父级的处理程序中,检查父级元素是否是事件(来源e.target如果是,则处理事件;如果不是,请忽略它,它是在子元素上生成的。像这样:

    $(".parent").on("click", ".container", function(event) {
        // Option 2: Look at event.target and ignore
        // the event if it originated in a descendant
        // element
        if (this === event.target) {
            alert("Parent clicked");
        }
    });
    

请注意,这些功能有两点稍有不同。第一个说“防止父母看到表格上的点击”,第二个说“忽略不直接在表格上的点击.parent .container”。当然,任何一种都可以适应不同的目标。

现场示例:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

父级点击事件与子级点击事件重叠

来自分类Dev

子级点击事件后如何删除父级

来自分类Dev

子级点击事件后如何删除父级

来自分类Dev

ng点击父级点击子级

来自分类Dev

链接点击事件被父级mousedown事件阻止

来自分类Dev

Reactjs - 将点击事件传递给父级

来自分类Dev

点击子级不会触发父级点击

来自分类Dev

点击子级不会触发父级点击

来自分类Dev

Angular2:指令:捕获子级的点击事件

来自分类Dev

将点击事件注册到给定 div / a 的子级

来自分类Dev

向父级展示子级事件

来自分类Dev

目标点击时从父级到子级的事件冒泡

来自分类Dev

子级可点击/父级可长按

来自分类Dev

父/子点击事件处理(香草JS)

来自分类Dev

点击子元素会触发父点击事件

来自分类Dev

单击“子级”元素时,忽略“父级onClick”事件

来自分类Dev

子点击事件触发父鼠标悬停事件

来自分类Dev

点击事件点击事件

来自分类Dev

当孩子被点击时触发父点击事件

来自分类Dev

React-如何仅捕获父级的onClick事件而不捕获子级的事件

来自分类Dev

关闭事件委派-DOM父级上的事件侦听器,涵盖给定类的子级/子级

来自分类Dev

关闭事件委派-DOM父级上的事件侦听器,涵盖给定类的子级/子级

来自分类Dev

父级点击不适用于子级链接,但链接已禁用

来自分类Dev

可以绑定到父级的子窗口上的事件吗?

来自分类Dev

如何定位被点击元素的最高父级

来自分类Dev

停止接收WPF点击事件的重叠矩形

来自分类Dev

如何防止点击事件相互重叠?

来自分类Dev

点击与点击事件

来自分类Dev

父级可拖动和子级输入类型范围之间的事件冲突

Related 相关文章

热门标签

归档