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 面向对象继承
Nov 26 Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 Javascript
js倒计时小程序
Nov 05 Javascript
jquery查找父元素、子元素(个人经验总结)
Apr 09 Javascript
express的中间件cookieParser详解
Dec 04 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
JavaScript实现的简单Tab点击切换功能示例
Jul 06 Javascript
Vue可自定义tab组件用法实例
Oct 24 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
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
禁止你的左键复制实用技巧
2013/01/04 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
js读写json文件实例代码
2014/10/21 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python生成随机数组的方法小结
2017/04/15 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
高一生物教学反思
2014/01/17 职场文书
微电影大赛策划方案
2014/06/05 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
新店开张活动方案
2014/08/24 职场文书
三方协议书
2015/01/27 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
python blinker 信号库
2022/05/04 Python