jQuery阻止同类型事件小结


Posted in Javascript onApril 19, 2013
<!DOCTYPE HTML> 
<html> 
<head> 
<title>test</title> 
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
</head> 
<body> 
<div style="height:300px;background-color:red;" id="red"> 
<div style="height:200px;background-color:green;" id="green"> 
</div> 
</div> 
</body> 
</html>

在上面的HTML中,red元素是green元素的父元素。
$(function(){ 
$("#green").click(function(event){ 
alert("green click1"); 
}); 
$("#green").click(function(event){ 
alert("green click2"); 
}); 
$("#red").click(function(event){ 
alert("red click"); 
}); 
});

上面的js代码给red元素和green元素添加了三个click事件。
当点击子元素green元素时,会依次执行green click1、green click2、red click事件。
事件追加:点击green元素会依次执行green click1、green click2两个事件(同一元素的同类型事件)。
事件冒泡:点击green元素会触发父元素的red click事件(父级元素的同类型事件)。
1、 在子元素事件函数中阻止事件冒泡
方法1:event.stopPropagation()
$(function(){ 
$("#green").click(function(event){ 
event.stopPropagation(); 
alert("green click"); 
}); 
$("#red").click(function(event){ 
alert("red click"); 
}); 
});

方法2:return false
$(function(){ 
$("#green").click(function(event){ 
alert("green click"); 
return false; 
}); 
$("#red").click(function(event){ 
alert("red click"); 
}); 
});

通过上面的两种方法,点击子元素green区域后,red click事件被阻止不再执行。但不会影响red元素其他区域的点击。
二者区别:
return false相当于event.preventDefault()+event.stopPropagation()。
2、 在父元素事件函数中阻止事件冒泡
$(function(){ 
$("#green").click(function(event){ 
alert("green click"); 
}); 
$("#red").click(function(event){ 
if(event.target == this) 
{ 
alert("red click"); 
} 
}); 
});

通过if(event.target== this)判断点击的目标元素是不是red元素本身,如果不是red本身而是它的子元素green元素,则不会执行if内的代码。
3、 阻止事件追加
以上的方法只能阻止事件冒泡(也就是父级元素的同类型事件),但不能阻止事件追加(同一元素的同类型事件)。
$(function(){ 
$("#green").click(function(event){ 
event.stopImmediatePropagation(); 
alert("green click"); 
}); 
$("#green").click(function(){ 
alert("green click2"); 
}); 
});

event.stopImmediatePropagation()不但可以阻止green click2事件,同时也阻止事件冒泡。
Javascript 相关文章推荐
目前流行的JavaScript库的介绍及对比
Sep 29 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
理解AngularJs指令
Dec 10 Javascript
JS+html5制作简单音乐播放器
Sep 13 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
Feb 10 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 Javascript
Vue.js 踩坑记之双向绑定
May 03 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
vue制作抓娃娃机的示例代码
Apr 17 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 #Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 #Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 #Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 #Javascript
JQuery 常用方法和事件详细介绍
Apr 18 #Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 #Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 #Javascript
You might like
php简单静态页生成过程
2008/03/27 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
php中引用符号(&amp;)的使用详细介绍
2016/12/06 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
javascript中简单的进制转换代码实例
2013/10/26 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
Array.filter中如何正确使用Async
2020/11/04 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python 域名分析工具实现代码
2009/07/15 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
快速查询Python文档方法分享
2017/12/27 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python使用minimax算法实现五子棋
2019/07/29 Python
python入门之井字棋小游戏
2020/03/05 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
迟到检讨书大全
2014/01/25 职场文书
交通事故协议书范文
2014/04/16 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
中小学生学籍证明
2014/10/25 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang