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 相关文章推荐
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
js实现的倒计时按钮实例
Jun 24 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 Javascript
jQuery+ajax读取并解析XML文件的方法
Sep 09 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
JS实现的DIV块来回滚动效果示例
Feb 07 Javascript
在vue中v-bind使用三目运算符绑定class的实例
Sep 29 Javascript
通过GASP让vue实现动态效果实例代码详解
Nov 24 Javascript
javascript使用canvas实现饼状图效果
Sep 08 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
基于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+Mysql无限分类的方法汇总
2015/03/02 PHP
php编程每天必学之表单验证
2016/03/01 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
js实现抽奖功能
2020/11/24 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
食堂个人先进事迹
2014/01/22 职场文书
银行办公室岗位职责
2014/03/10 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
农业项目投资意向书
2015/05/09 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android