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 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
深入浅出分析javaScript中this用法
May 09 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
Vue实现剪贴板复制功能
Dec 31 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
May 10 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
基于python实现KNN分类算法
2020/04/23 Python
python开发游戏的前期准备
2019/05/05 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
运行时异常与一般异常有何异同?
2014/01/05 面试题
回门宴答谢词
2014/01/13 职场文书
同事打架检讨书
2014/02/04 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
公务员个人考察材料
2014/12/23 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
同事离别感言
2015/08/04 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python