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背投广告代码的完善
Apr 08 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
Sep 30 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
Dec 12 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
在Vue-cli里应用Vuex的state和mutations方法
Sep 16 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
JavaScript实现显示和隐藏图片
Apr 29 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
多重?l件?合查?(一)
2006/10/09 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
python 实现堆排序算法代码
2012/06/05 Python
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
集团公司人力资源部岗位职责
2014/01/03 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
初中班主任评语大全
2014/04/24 职场文书
企业宣传口号
2014/06/12 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
结婚幸福感言
2015/08/01 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
Python torch.flatten()函数案例详解
2021/08/30 Python
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
Python基本的内置数据类型及使用方法
2022/04/13 Python