javascript - 使用 jQuery 捕获和冒泡

标签 javascript jquery html event-bubbling propagation

我是 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/

相关文章:

javascript - 图片上传ajax jquery

javascript - 我如何让 event.target.className 检查名为 className 的 div 内的图像?

javascript - 如何对 JavaScript 对象的值求和?

javascript - CSS 过渡在 Safari 中不起作用

javascript - jquery mega menu 鼠标悬停不工作

javascript - 检索带间距的内部文本

jquery - 看起来很简单,但真的是这样吗?跨浏览器框线通过?

javascript - ReactJS:如何在 JavaScript 中过滤数组以在 map 上显示特定图像

javascript - 使用 li :hover is not showing div when the list item is an anchor

javascript - 将 Razor 变量转换为 Javascript