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 放大镜 移动镜片效果代码
May 09 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
May 12 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
js中的push和join方法使用介绍
Oct 08 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
js判断元素是否隐藏的方法
Jun 09 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
ECMAscript 变量作用域总结概括
Aug 18 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
Aug 07 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 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程序设计中的MVC编程思想
2014/07/28 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
xml和web特殊字符
2009/04/28 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
wxPython窗口中文乱码解决方法
2014/10/11 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python 统计字数的思路详解
2018/05/08 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
python使用minimax算法实现五子棋
2019/07/29 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
试述DBMS的主要功能
2016/11/13 面试题
中学生自我鉴定
2014/02/04 职场文书
红与黑读书笔记
2015/06/29 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers