利用JQuery阻止事件冒泡


Posted in Javascript onDecember 01, 2016

冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。

我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点击里面的div我们希望处理这个div的事件,但是呢,我们不希望外层的div的事件也执行,这时候我们就要用到阻止冒泡。

通俗点来说吧,你在家里看电视,躲在自己的小房间,但是你不希望声音传到隔壁父母的耳朵里,这时候,你可能躲在被窝里,或者墙壁的隔音效果很好,阻隔声音可以理解为阻止冒泡。

<style>
 #content{
  width: 140px;
  border: 1px solid blue;
 }
 #msg{
  width: 100px;
  height: 100px;
  margin: 20px;
  border: 1px solid red;
 }
</style>
<body>
  <div id="content">
 外层div
 <div id="msg">
  内层div
 </div>
 </div>

</body>

显示结果

利用JQuery阻止事件冒泡

对应的jQuery代码如下:

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
 // 为内层div绑定click事件
 $("#msg").click(function(){
  alert("我是小div");
 });
 // 为外层div元素绑定click事件
 $("#content").click(function(){
  alert("我是大div");
 });
 // 为body元素绑定click事件
 $("body").click(function(){
  alert("我是body");
 });
 });
 </script>

    当点击小div时,会触发大div与body 的点击事件。点击大div时会触发body的点击事件。

如何防止这种冒泡事件发生呢?

修改如下:

event.stopPropagation(); // 阻止事件冒泡

有时候点击提交按钮会有一些默认事件。比如跳转到别的界面。但是如果没有通过验证的话,就不应该跳转。这时候可以通过设置event.preventDefault(); //阻止默认行为 ( 表单提交 )。

html部分

<body>
 <form action="test.html">
  用户名:<input type="text" id="username" />
  <br/>
  <input type="submit" value="提交" id="sub"/>
 </form>
 </body>

利用JQuery阻止事件冒泡

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
  $("#sub").click(function(event){
  //获取元素的值,val() 方法返回或设置被选元素的值。
  var username = $("#username").val(); 
  //判断值是否为空
  if(username==""){ 
   //提示信息
   //alert("文本框的值不能为空");
   $("#msg").html("<p>文本框的值不能为空.</p>"); 
   //阻止默认行为 ( 表单提交 )
   event.preventDefault(); 
  }
  });
 });
 </script>

//阻止默认行为 ( 表单提交 )
                    event.preventDefault(); 
还有一种防止默认行为的方法就是return false。效果一样。

代码如下:

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
  $("#sub").click(function(event){
  //获取元素的值,val() 方法返回或设置被选元素的值。
  var username = $("#username").val(); 
  //判断值是否为空
  if(username==""){ 
   //提示信息
   //alert("文本框的值不能为空");
   $("#msg").html("<p>文本框的值不能为空.</p>"); 
   //阻止默认行为 ( 表单提交 )
   //event.preventDefault(); 
   return false;
  }
  });
 });
 </script>

同理,上面的冒泡事件也可以通过return false来处理。

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <script type="text/javascript">
 $(function(){
 // 为内层div绑定click事件
 $("#msg").click(function(event){
  alert("我是小div");
  //event.stopPropagation(); // 阻止事件冒泡
  return false;
 });
 // 为外层div元素绑定click事件
 $("#content").click(function(event){
  alert("我是大div");
  //event.stopPropagation(); // 阻止事件冒泡
   return false;
 });
 // 为body元素绑定click事件
 $("body").click(function(event){
  alert("我是body");
  //event.stopPropagation(); // 阻止事件冒泡
  return false;
 });
 });

以上就是本文的全部内容,希望对大家有所帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
收集的网上用的ajax之chat.js文件
Apr 08 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
Feb 27 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
Jan 13 Javascript
详解webpack打包vue时提取css
May 26 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
通过 JS 判断页面是否有滚动条的实现方法
Apr 05 Javascript
js回文数的4种判断方法示例
Jun 04 Javascript
node后端服务保活的实现
Nov 10 Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 #Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 #Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 #Javascript
jQuery中ajax错误调试分析
Dec 01 #Javascript
JQuery学习总结【二】
Dec 01 #Javascript
Vue.js第二天学习笔记(vue-router)
Dec 01 #Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 #Javascript
You might like
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
超级强大的表单验证
2006/06/26 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
JS实用的动画弹出层效果实例
2015/05/05 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
vue组件name的作用小结
2018/05/23 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
ansible作为python模块库使用的方法实例
2017/01/17 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
行政主管岗位职责
2013/11/18 职场文书
建材业务员岗位职责
2013/12/08 职场文书
优秀教师主要事迹
2014/02/01 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
单位单身证明样本
2014/10/11 职场文书
优秀教师先进材料
2014/12/16 职场文书
以权谋私检举信范文
2015/03/02 职场文书
招商银行收入证明
2015/06/17 职场文书
村主任当选感言
2015/08/01 职场文书
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python