jQuery中事件对象e的事件冒泡用法示例介绍


Posted in Javascript onApril 25, 2014

之前查手册的时候没有看到有事件对象这一概念,当时我想实现的是点击一个文本框出现一个下拉多选框,在文本框失去焦点是触发blur事件,从而使下拉框隐藏起来。但是当我要选择多选框是也会使它隐藏,就不能进行选择了,这让我很郁闷。查了一天的资料,终于在脱离了焦点这一块。在网上发现有一个事件冒泡的东西,发现通过点击可以实现我的这一功能。

e.stopPropagation()阻止事件冒泡

<head> 
<title></title> 
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
</head> 
<body> 
<table> 
<tr> 
<td><span>冒泡事件测试</span></td> 
</tr> 
</table> 
</body>

我们先看这段代码:
<script type="text/javascript"> 
$(function () { 
$("table").click(function () { alert("table alert"); }); 
$("td").click(function () { alert("td alert"); }); 
$("span").click(function (){ 
alert("span alert"); 
}); 
}); 
</script>

我们会看到这样的情况:span alert -> td alert -> table alert。这就叫事件冒泡。就是从下到上,从里到外,事件依次触发。能依次触发的条件是拥有同一事件的多个嵌套的标签,切事件会同时同步发生,会从里到外实现同一事件的响应。

有的时候我们不希望事件冒泡咋办?

<script type="text/javascript"> 
$(function () { 
$("table").click(function () { alert("table alert"); }); 
$("td").click(function () { alert("td alert"); }); 
$("span").click(function (e){ 
alert("span alert"); 
e.stopPropagation(); 
}); 
}); 
</script>

当我给整个document实现click事件是,可以给文本框和下拉选框阻止事件冒泡,使得再点击她们的同时不会使document触发事件。

如果想获得事件相关信息,就要给知识方法加一个e对象,e就是事件对象。

e.preventDefault()阻止事件默认行为。

$("a").click(function (e) { 
alert("默认行为被禁止喽"); 
e.preventDefault(); 
}); 
<a href="http://www.baidu.com">测试</a>

return false等效于同时调用e.preventDefault()和e.stopPropagation()

return false除了阻止默认行为之外,还会阻止事件冒泡。如果手上有一份jquery源代码的话,可查看其中有如下代码:

if (ret===false){ 
event.preventDefault(); 

event.stopPropagation(); 
}
Javascript 相关文章推荐
Prototype Selector对象学习
Jul 23 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
Vue路由切换页面不更新问题解决方案
Jul 10 Javascript
javascript实现图片轮换动作方法
Aug 07 Javascript
ant design vue中表格指定格式渲染方式
Oct 28 Javascript
jquery实现select选中行、列合计示例
Apr 25 #Javascript
js点击事件链接的问题解决
Apr 25 #Javascript
对js关键字命名的疑问介绍
Apr 25 #Javascript
html5+javascript制作简易画板附图
Apr 25 #Javascript
js实现字符串的16进制编码不加密
Apr 25 #Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 #Javascript
jquery操作select大全
Apr 25 #Javascript
You might like
php自定义的格式化时间示例代码
2013/12/05 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
angular学习之动态创建表单的方法
2018/12/07 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
AUC计算方法与Python实现代码
2020/02/28 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
如何在python中执行另一个py文件
2020/04/30 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
高二化学教学反思
2014/01/30 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
入党心得体会
2019/06/20 职场文书