我是 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。
不知道我说的对不对,这个测试表明浏览器默认的传播方式是冒泡。
如有错误请指正
最佳答案
jQuery 只使用事件冒泡。如果你想添加一个使用捕获模型的事件处理程序,你必须使用 addEventListener
明确地执行它,第三个参数 true
如你在问题中所示。
关于javascript - 使用 jQuery 捕获和冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24585698/