javascript - 仅触发 jQuery 中最内层元素的点击事件

标签 javascript jquery events click propagation

我试图在 HTML 树中最内层的元素上触发点击事件,但由于点击甚至绑定(bind)到其父容器,所以两个事件都被触发,这不是我需要的。我之前用 stopPropagation() 解决了这个问题,但我今天似乎无法让它工作。

jQuery('#parent li').click(function() {
    jQuery(this).children('.contained').slideDown();
});
jQuery('.contained').click(function() {                 
    Query(this).slideUp();
});

假设这是我们的 HTML:

<ul id="parent">
    <li>
        click to show more
        <p class="contained">click to hide</p>
    </li>
</ul>

我相信这不会生效,因为它在 li 中包含一个 p,但为了简单起见,让我们暂时忽略它。如何在没有父点击的情况下让内部元素 slideUp() 甚至在之后立即触发它到 slideDown()?

最佳答案

return false 停止冒泡:

jQuery('.contained').click(function() {                 
    Query(this).slideUp();
    return false;
});

请注意,返回 false 也会阻止事件的默认行为。 Read more here .

或者使用事件对象的stopPropagation函数:

jQuery('.contained').click(function(e) {                 
    Query(this).slideUp();
    e.stopPropagation();
});

关于javascript - 仅触发 jQuery 中最内层元素的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448390/

相关文章:

JavaScript NaN 错误

java - 是否可以让 Spring ApplicationListener 监听 2 种或更多类型的事件?

jquery - 真正的 jQuery "Grid"

javascript - $(this).data(value) 与 jQuery click() 方法的未定义值

javascript - Asp.net 使用 jQuery 启用/禁用复选框列表

mysql - FullCalendar jquery json 事件 MySQL 问题

c++ - mousePressEvent 绑定(bind)不正确?

javascript - 我们如何为 ex_date(ddsf#dsd) 编写正则表达式?

javascript - Ajax错误不包含响应

c# - 在 ASP.NET 中添加消息框