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精华代码集
Jan 24 Javascript
默认让页面的第一个控件选中的javascript代码
Dec 26 Javascript
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
javascript smipleChart 简单图标类
Jan 12 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
Feb 12 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 Javascript
JS中跳出循环的示例代码
Sep 14 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
js中数组对象去重的两种方法
Jan 18 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 Javascript
基于JS实现快速读取TXT文件
Aug 25 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/08/27 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP学习笔记之一
2011/01/17 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
微信小程序实现购物车功能
2020/11/18 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python 错误和异常小结
2013/10/09 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
python实现简单井字棋游戏
2020/03/04 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
招商业务员岗位职责
2013/12/16 职场文书
大学生职业生涯规划书模版
2013/12/30 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
经典毕业生求职信
2014/07/12 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
成绩单评语
2015/01/04 职场文书
考博导师推荐信范文
2015/03/27 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
公司安全管理制度范本
2015/08/05 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle