Js阻止事件冒泡与阻止默认事件

未知
2024-03-21 10:47:58
0

Js阻止事件冒泡与阻止默认事件

1、event.stopPropagation()方法

event.stopPropagation()方法阻止事件冒泡到父元素,阻止任何父事件处理程序被执行。不让事件向document上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开。

提示:请使用 event.isPropagationStopped()方法来检查指定的事件上是否调用了该方法。

2、event.preventDefault()方法

取消事件的默认动作。该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。

例如:

form表单如果 type 属性是 "submit",在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。a元素中href连接,如果调用此方法是,连接不会被打开。

注意:

  1. 如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。

  2. 该方法会发生冒泡,冒泡会传递到上一层的父元素。

3、return false

这个方法比较暴力,它会同时阻止事件冒泡和默认事件,写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;

可以理解为return false就等于同时调用了event.stopPropagation()event.preventDefault()

4、实例讲解

这是html代码,在div里面套了一个a标签,连接到百度官网。

1
2
3
<div id="box">
  <a id="box_1" href="http://www.baidu.com">百度一下</a>
</div>

第一种:不阻止事件冒泡和默认事件

1
2
3
document.getElementById('box').onclick=function(e){
  console.log("1");//不阻止事件冒泡会打印1,页面跳转;   
}

第二种:阻止默认事件

1
2
3
4
5
6
document.getElementById('box').onclick=function(e){
  console.log("1");
}
document.getElementById('box_1').onclick=function(e){
  e.preventDefault();//阻止默认事件
}

我们会发现阻止了默认事件,点击a标签页面不会跳转,但是会打印出1。说明e.preventDefault()只能阻止默认动作,但是冒泡仍然会发生。

第三种:阻止事件冒泡

1
2
3
4
5
6
document.getElementById('box').onclick=function(e){
  console.log("1");
}
document.getElementById('box_1').onclick=function(e){
  e.stopPropagation();//阻止事件冒泡
}

点击a标签,页面会跳转到百度官网,但是在控制台中是没有打印“1”的。

第四种:阻止事件冒泡和默认事件

1
2
3
4
5
6
7
document.getElementById('box').onclick=function(e){
  console.log("1");
}
document.getElementById('box_1').onclick=function(e){
  e.stopPropagation(); 
  e.preventDefault();//阻止默认事件
}

等同于

1
2
3
document.getElementById('box_1').onclick=function(e){
  return false;
}

页面不会跳转,也不会打印出1。这里return false;等于同时调用了event.stopPropagation()event.preventDefault()

以上就是Js阻止事件冒泡与阻止默认事件的详细内容,更多请关注全栈开发网其它相关文章!
原文链接:https://www.cnblogs.com/Fairy-Tail-blogs/p/15691680.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 service@p2hp.com 进行投诉反馈,一经查实,立即处理!
-- -- 0

相关内容

2024 年 5 个令人兴奋的 JavaScript 新特性
2024 年 5 个令人兴奋的 JavaScript 新特性
在本文中,我们将探讨一些最令人兴奋和最受期待的 JavaScript 功能,这些功能预计将...
2024-03-27 14:08:59
JavaScript如何定义数组?方法介绍
JavaScript如何定义数组?方法介绍
在学习 JavaScript 过程中,数组的定义是学习的重难点之一。那么这篇文章中, 小编...
2024-03-19 11:06:48
前端 JS 安全对抗原理与实践
前端 JS 安全对抗原理与实践
前端代码都是公开的,为了提高代码的破解成本、保证 JS 代码里的一些重要逻辑不被居心叵测的...
2024-03-19 10:57:28
js replace方法解析记录
js replace方法解析记录
js replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达...
2024-03-18 10:45:28
JavaScript 中验证 URL 的新方法(2023 版)
JavaScript 中验证 URL 的新方法(2023 版...
JavaScript 领域的 URL 验证前沿有新闻!经过这么多年咒骂 JavaScrip...
2024-03-17 12:12:38
2024 年 5 个令人兴奋的 JavaScript 新特性 在本文中,我们将探讨一些最令人兴奋和最受期待的 JavaScript 功能,这些功能预计将在 202...
前端 JS 安全对抗原理与实践 前端代码都是公开的,为了提高代码的破解成本、保证 JS 代码里的一些重要逻辑不被居心叵测的人利用,需...
JavaScript如何定义数组?方法介绍 在学习 JavaScript 过程中,数组的定义是学习的重难点之一。那么这篇文章中, 小编教你 Ja...
js replace方法解析记录 js replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子...
Js阻止事件冒泡与阻止默认事件 Js如何阻止事件冒泡与阻止默认事件
JavaScript 中验证 URL 的新方法(2023 版) JavaScript 领域的 URL 验证前沿有新闻!经过这么多年咒骂 JavaScript 没有一...
代码速度慢?避免这 19 种常见的 JavaScript 和 Node.js 错... 速度、性能和响应性在 Web 开发中起着至关重要的作用,尤其是在使用 JavaScript 和 No...

最新文章

2024 年 5 个令人兴奋的 JavaScript 新特性 在本文中,我们将探讨一些最令人兴奋和最受期待的 JavaScript 功能,这些功能预计将在 202...
Js阻止事件冒泡与阻止默认事件 Js如何阻止事件冒泡与阻止默认事件
JavaScript如何定义数组?方法介绍 在学习 JavaScript 过程中,数组的定义是学习的重难点之一。那么这篇文章中, 小编教你 Ja...
前端 JS 安全对抗原理与实践 前端代码都是公开的,为了提高代码的破解成本、保证 JS 代码里的一些重要逻辑不被居心叵测的人利用,需...
js replace方法解析记录 js replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子...
JavaScript 中验证 URL 的新方法(2023 版) JavaScript 领域的 URL 验证前沿有新闻!经过这么多年咒骂 JavaScript 没有一...
代码速度慢?避免这 19 种常见的 JavaScript 和 Node.js 错... 速度、性能和响应性在 Web 开发中起着至关重要的作用,尤其是在使用 JavaScript 和 No...