【发布时间】:2014-08-26 11:11:08
【问题描述】:
我是 jQuery 新手,我正在尝试理解捕获和冒泡的概念。
我读过很多文章,但大部分都描述了 Javascript 的事件传播。
假设我们有以下 HTML 代码:
<div id="outer">
outer
<div id="inner">
inner
</div>
</div>
捕获是我们向下 DOM 元素的阶段,而冒泡是我们向上的阶段。
在 Javascript 中,您可以决定遵循哪种方式(使用 true 或 false 参数):
element.addEventListener('click', doSomething, true) --> capture phase
element.addEventListener('click', doSomething, false) --> bubble phase
除了 JavaScript 方式之外,jQuery 是否有类似的方式来表示遵循哪种方式?
jQuery 也使用默认阶段吗?比如泡泡?
因为我用下面的代码来测试这个:
css
<style>
div {
border: 1px solid green;
width: 200px;
}
</style>
jQuery
<script>
$(document).ready(function(){
$('div').click(function(){
$(this).animate({'width':'+=10px'},{duration: 3000})
});
});
</script>
似乎当我点击外部 div 时,只有那个 div 动画到更大的 div。当我单击内部 div 时,两个 div 都会动画到更大的 div。
不知道是不是我记错了,不过这个测试显示浏览器默认的传播方式是冒泡的。
如果我错了,请纠正我。
【问题讨论】:
-
@adeneo 这个问题如何解决 jQuery 的功能? OP 似乎明白什么是冒泡和捕获,他只是想知道它与 jQuery 的关系。
-
@Barmar - 不确定,这就是我没有关闭的原因,我想也许 OP 需要对捕获的解释进行解释,因为它与 jQuery 完全没有关系,因为jQuery 在调用 addEventlistener 时将其硬编码为“false”,并且无法更改它,因为通常从不使用捕获。
标签: javascript jquery html event-bubbling propagation