javascript - 有人可以解释这个 stopPropagation 是如何工作的吗?

标签 javascript jquery stoppropagation

我试图使用我在 Stackoverflow 上找到的一些代码来设置这种“当您在元素外部单击时,关闭它”类型的东西:

$(document).click(function() {
 $('.list-to-hide').hide();
});

$('.show-list-button').click(function(event) {
 event.stopPropagation();
});

有人可以用 stopPropagation 解释后面的部分吗?我不明白为什么需要它。

谢谢! 马特

最佳答案

想象一下:

<div>
    DIV
    <span>
        Span
    </span>
<div>

和:

$('div').click(function() { alert('div clicked'); });
$('span').click(function() { alert('span clicked'); });

Check out what happens when you click each one

当您单击 span 时,它恰好也触发了 div,因为您也单击了 div。

现在,如果我们想提醒 span,我们需要在单击 span 时停止触发 div 点击,因此我们这样做:

$('div').click(function() { alert('div clicked'); });
$('span').click(function(e) { alert('span clicked'); e.stopPropagation(); });

See what happens now

关于javascript - 有人可以解释这个 stopPropagation 是如何工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784950/

相关文章:

javascript - 脚本在 html 中有效,但在 javascript 文件中无效

javascript - 在每天加载 jquery fullcalendar 后添加自定义超链接并在单击超链接时停止阻止/传播

javascript - 没有 jQuery 的 stopPropagation

javascript - 为什么第一个 If 'is Not' 语句不起作用?

javascript - 更改选项的选定属性后强制选择刷新

jquery - 使用 CSS/jQuery 平衡 HTML 中的标题

jquery - 如何让 jQuery 在鼠标悬停在链接上时向下滚动一个 div(到另一个 div)?

javascript - 右键单击在 Firefox 中不断传播

javascript - 将每个字母表定位到每个答案容器但不添加新的答案容器 - 使用 AngularJs 拖放

javascript - 避免多次点击一个 div