首页 > 其他分享 >stopPropagation()和preventDefault()这两个方法有什么区别?

stopPropagation()和preventDefault()这两个方法有什么区别?

时间:2024-11-28 09:33:58浏览次数:9  
标签:clicked 区别 preventDefault event inner stopPropagation 冒泡

stopPropagation()preventDefault() 是 JavaScript 中用于事件处理的两个重要方法,它们的主要区别在于它们针对事件的不同方面:

  • stopPropagation() 阻止事件冒泡: 当一个元素上的事件被触发时,例如点击一个按钮,该事件会沿着 DOM 树向上冒泡,触发其父元素、祖先元素上的相同事件,直到到达文档根节点。stopPropagation() 方法阻止了这种冒泡行为,使得事件只在当前元素上触发,而不会继续传递到其祖先元素。

  • preventDefault() 阻止默认行为: 很多 HTML 元素都有一些默认行为,例如点击链接会跳转到新的页面,提交表单会刷新页面,点击表单的提交按钮也会提交表单。preventDefault() 方法阻止了这些默认行为的发生。

举例说明:

假设你有一个嵌套的结构:

<div id="outer">
  <button id="inner">Click Me</button>
</div>

并且你为 outerinner 元素都绑定了点击事件:

document.getElementById('outer').addEventListener('click', function(event) {
  console.log('Outer clicked');
});

document.getElementById('inner').addEventListener('click', function(event) {
  console.log('Inner clicked');
  // event.stopPropagation(); // 如果取消注释,则阻止冒泡
  // event.preventDefault(); // 如果取消注释,则阻止默认行为 (如果适用)
});
  1. 不使用 stopPropagation()preventDefault(): 当你点击内部的按钮时,控制台会输出:

    Inner clicked
    Outer clicked
    

    这是因为事件从 inner 冒泡到了 outer

  2. 使用 stopPropagation(): 如果在 inner 的事件处理函数中添加 event.stopPropagation();,当你点击内部按钮时,控制台只会输出:

    Inner clicked
    

    因为事件冒泡被阻止了。

  3. 使用 preventDefault() (假设 inner 是一个 submit 按钮 within a form): 如果 inner 是一个提交按钮,点击它会提交表单并刷新页面。如果在 inner 的事件处理函数中添加 event.preventDefault();,点击按钮后将不会提交表单或刷新页面,但事件仍然会冒泡到 outer,控制台会输出:

    Inner clicked
    Outer clicked
    

总结:

方法 作用
stopPropagation() 阻止事件冒泡到父元素
preventDefault() 阻止元素的默认行为

这两个方法可以根据需要单独使用,也可以结合使用。 理解它们的区别对于编写高效和可控的前端交互至关重要。

标签:clicked,区别,preventDefault,event,inner,stopPropagation,冒泡
From: https://www.cnblogs.com/ai888/p/18573551

相关文章

  • png8和png24有什么区别呢?
    PNG8和PNG24的主要区别在于颜色深度和透明度的处理方式:PNG8(索引颜色):使用一个调色板,最多存储256种颜色。每个像素都用一个索引值来表示,这个索引值对应调色板中的一个颜色。类似于GIF的颜色存储方式。PNG24(真彩色):支持24位真彩色,可以显示超过1600万种......
  • 陶粒和回填宝是常用于建筑工程中的两种材料,它们有不同的特性和适用场景。以下是陶粒和
    陶粒是一种人工轻质骨料,通常由粘土、陶土、矿石等原料经高温烧结后制成。它的主要特点是具有较高的孔隙率和较低的密度,因此具有良好的保温、隔音、抗压、透水等特性。陶粒广泛应用于建筑、园林绿化、环境保护等多个领域。陶粒的特点:轻质:陶粒的密度通常在0.8-1.2g/cm³之间,比普......
  • 专属主机和裸金属服务器的区别是什么?
    ‌裸金属服务器和专属主机的主要区别在于管理方式、基本架构、性能稳定性、安全性和成本灵活性等方面。‌‌管理方式‌:‌裸金属服务器‌:由云服务提供商管理,用户可以按需购买和使用,但需要自行负责硬件的维护与升级‌1。‌专属主机‌:通常由用户控制,用户拥有对物理机的全部控制......
  • htm、html、shtml三者有什么区别呢?
    .htm,.html,and.shtmlareallfileextensionsusedforwebpages,buttheyhaveslightdifferencesrelatedtohowtheserverhandlesthem:.htmand.html:Theseareessentiallyidenticalandthemostcommonfileextensionsforwebpages.Theycontain......
  • 进程和线程的区别
    一、进程(一)进程的概念进程是指程序的一次执行过程,它具有生命周期,从创建到终止经历了一系列的状态变化。(二)进程的作用进程作为操作系统进行资源分配的基本单位,主要目的是为了实现程序的并发执行,从而提高系统的资源利用效率和处理能力。(三)进程的限制由于进程涉及资源的分配与......
  • 数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log
    数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undolog、redolog、binlog作用、MySQL和Redis的区别说一下索引失效的场景?什么是慢查询?原因是什么?可以怎么优化?undolog、redolog、binlog有什么用MySQL和Redis的区别是什么说一下索引失效的场景......
  • 高性能框架Aeron的BufferPool和Java的内存池有什么区别?
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?
    在汽车渲染领域,选择合适的工具对于实现高质量的视觉效果至关重要。Blender和UE5(UnrealEngine5)作为两大主流3D软件,各自在渲染动画方面有着显著的差异。本文将从核心定位与用途、工作流程、渲染技术和灵活性、后期处理与合成四个方面,说明下这两款软件在汽车渲染领域的适用性。核......
  • AGI和ANI有什么区别?
    AGI(ArtificialGeneralIntelligence,通用人工智能)和ANI(ArtificialNarrowIntelligence,狭义人工智能)是人工智能领域的两个重要概念,它们的主要区别如下:1.**智能的广度和灵活性**:  -**AGI**:指的是能够完成人类能够完成的任何智力任务的能力,具有广泛的感知、学习、推理、......
  • 请解释下你理解的并行和并发、同步和异步、阻塞和非阻塞之间有什么区别?
    在前端开发中,理解并行、并发、同步、异步、阻塞和非阻塞这些概念至关重要,它们会影响代码的执行效率和用户体验。以下是对这些概念的解释以及它们之间的区别:1.并行与并发:并行(Parallelism):指的是多个任务同时执行。这需要多核处理器,每个核处理一个任务。想象一下多条高速公......