• <bdo id='rzraJ'></bdo><ul id='rzraJ'></ul>

      <small id='rzraJ'></small><noframes id='rzraJ'>

      <legend id='rzraJ'><style id='rzraJ'><dir id='rzraJ'><q id='rzraJ'></q></dir></style></legend>
      <tfoot id='rzraJ'></tfoot>

      <i id='rzraJ'><tr id='rzraJ'><dt id='rzraJ'><q id='rzraJ'><span id='rzraJ'><b id='rzraJ'><form id='rzraJ'><ins id='rzraJ'></ins><ul id='rzraJ'></ul><sub id='rzraJ'></sub></form><legend id='rzraJ'></legend><bdo id='rzraJ'><pre id='rzraJ'><center id='rzraJ'></center></pre></bdo></b><th id='rzraJ'></th></span></q></dt></tr></i><div id='rzraJ'><tfoot id='rzraJ'></tfoot><dl id='rzraJ'><fieldset id='rzraJ'></fieldset></dl></div>

      js事件冒泡、事件捕获和阻止默认事件详解

      时间:2023-12-09
        • <tfoot id='iQWF2'></tfoot>

          <legend id='iQWF2'><style id='iQWF2'><dir id='iQWF2'><q id='iQWF2'></q></dir></style></legend>

              <tbody id='iQWF2'></tbody>

            <small id='iQWF2'></small><noframes id='iQWF2'>

              • <bdo id='iQWF2'></bdo><ul id='iQWF2'></ul>
                <i id='iQWF2'><tr id='iQWF2'><dt id='iQWF2'><q id='iQWF2'><span id='iQWF2'><b id='iQWF2'><form id='iQWF2'><ins id='iQWF2'></ins><ul id='iQWF2'></ul><sub id='iQWF2'></sub></form><legend id='iQWF2'></legend><bdo id='iQWF2'><pre id='iQWF2'><center id='iQWF2'></center></pre></bdo></b><th id='iQWF2'></th></span></q></dt></tr></i><div id='iQWF2'><tfoot id='iQWF2'></tfoot><dl id='iQWF2'><fieldset id='iQWF2'></fieldset></dl></div>

                JS事件冒泡、事件捕获和阻止默认事件

                事件冒泡

                事件冒泡是指当一个元素触发了某个事件时,该事件会从子元素一直冒泡到祖先元素。例如,当一个按钮被点击时,点击事件会首先被触发,然后该事件会向外冒泡,一直到文档根节点才停止。

                事件捕获

                事件捕获是指当一个元素触发了某个事件时,该事件会从祖先元素一直捕获到子元素。例如,当一个按钮被点击时,点击事件会从文档根节点开始捕获,直到被点击的按钮才停止。

                阻止默认事件

                有些元素会有默认的事件行为,例如a标签的点击会跳转页面,表单的提交会刷新页面等。为了防止这些默认行为发生,我们可以使用preventDefault()方法来中止默认事件的执行。例如,当点击一个a标签时,可以使用以下代码防止跳转:

                document.querySelector('a').addEventListener('click', function(event) {
                  event.preventDefault();
                });
                

                事件流模型

                事件流模型分为两种:捕获型事件流和冒泡型事件流。在捕获型事件流中,事件首先从最外层的祖先元素被捕获,接着沿着树形结构依次触发,最后到达目标元素;在冒泡型事件流中,事件首先从目标元素开始,沿着树形结构依次向上冒泡,最终到达祖先元素。默认情况下,所有的事件都是冒泡型事件流。

                示例一:事件冒泡

                <body>
                  <div id="grandparent">
                    <div id="parent">
                      <div id="child"></div>
                    </div>
                  </div>
                </body>
                
                document.querySelector('#grandparent').addEventListener('click', function(){
                  console.log('Grandparent clicked');
                });
                
                document.querySelector('#parent').addEventListener('click', function(){
                  console.log('Parent clicked');
                });
                
                document.querySelector('#child').addEventListener('click', function(){
                  console.log('Child clicked');
                });
                

                当点击child元素时,依次输出“Child clicked”,“Parent clicked”和“Grandparent clicked”。

                示例二:阻止默认事件

                <body>
                  <a href="http://www.baidu.com">点击跳转</a>
                </body>
                
                document.querySelector('a').addEventListener('click', function(event){
                  event.preventDefault();
                  console.log('Link clicked, but default behavior prevented');
                });
                

                当点击a标签时,阻止了跳转并输出“Link clicked, but default behavior prevented”。

                上一篇:基于JS实现带动画效果的流程进度条 下一篇:手把手教你如何排查Javascript内存泄漏

                相关文章

                  <i id='XGE1S'><tr id='XGE1S'><dt id='XGE1S'><q id='XGE1S'><span id='XGE1S'><b id='XGE1S'><form id='XGE1S'><ins id='XGE1S'></ins><ul id='XGE1S'></ul><sub id='XGE1S'></sub></form><legend id='XGE1S'></legend><bdo id='XGE1S'><pre id='XGE1S'><center id='XGE1S'></center></pre></bdo></b><th id='XGE1S'></th></span></q></dt></tr></i><div id='XGE1S'><tfoot id='XGE1S'></tfoot><dl id='XGE1S'><fieldset id='XGE1S'></fieldset></dl></div>

                  <small id='XGE1S'></small><noframes id='XGE1S'>

                  • <bdo id='XGE1S'></bdo><ul id='XGE1S'></ul>
                1. <legend id='XGE1S'><style id='XGE1S'><dir id='XGE1S'><q id='XGE1S'></q></dir></style></legend>
                  1. <tfoot id='XGE1S'></tfoot>