JavaScript实现事件的中断传播和行为阻止方法示例
事件传播
MicroSoft的设计是当事件在元素上触发时,该事件将接着在该节点的父节点触发,以此类推,事件一直沿着DOM树向上传播,直到到达顶层对象document元素。这种自底向上的事件传播方式称为“事件冒泡”,也就是事件传播。
如何中断事件的传播?
stopPropagation()
w3c取消冒泡
cancleBubble = true
IE取消冒泡
取消事件默认效果:
returnValue = false
IE 取消事件效果
defaultPrevent()
w3c取消事件效果
<div id='aa'> <div id='bb'> <div id ='cc'></div> </div> </div>
#aa{ width: 600px; height: 600px; background: gray; } #bb{ width: 400px; height: 400px; background: green; } #cc{ width: 200px; height: 200px; background: red; }
捕捉写法停止传播 从最顶层开始往下
document.getElementById('aa').addEventListener('click',function (ev){alert('aa');ev.stopPropagation();},true);// 结果捕捉到aa 加true 由冒泡变为捕捉 从上到下 document.getElementById('bb').addEventListener('click',function (){alert('bb')},true); document.getElementById('cc').addEventListener('click',function (){alert('cc')},true);
冒泡写法停止传播 从下往上
document.getElementById('aa').addEventListener('click',function (){alert('aa');});//加true 由冒泡变为捕捉 从上到下 document.getElementById('bb').addEventListener('click',function (){alert('bb')}); document.getElementById('cc').addEventListener('click', function (ev){ alert('cc'); ev.stopPropagation(); // ev.cancleBubble = true;//IE下 取消冒泡方法 }); //结果是冒出cc 停止传播 }
取消事件效果
returnValue = false
//IE 取消事件效果
preventDefault()
//w3c取消事件效果
document.getElementsByTagName('a')[0].onclick = function (ev){ alert('点击'); //达到事件结束的效果 但是函数还是往下运行 // ev.preventDefault(); alert('已经拦截'); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
相关推荐
-
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
取消浏览器对事件的默认行为(响应)(比如<a>标签的跳转等)并停止事件的继续传播. 实现代码 复制代码 代码如下: function stopEvent (evt) { var evt = evt || window.event; if (evt.preventDefault) { evt.preventDefault(); evt.stopPropagation(); } else { evt.returnValue = false; evt.cancelBubble = true; } }
-
flex中event.preventDefault()方法取消事件的默认行为
先看一个例子: 复制代码 代码如下: <mx:DataGrid id= "songList" dataProvider= "{songDB}" width= "100%" height= "100%" editable= "true" itemEditEnd="itemEditEndHandler(event)" itemEditBeginning= "itemEditB
-
Javascript Event(事件)的传播与冒泡
特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的冒泡和捕获,而IE8-浏览器只支持冒泡 标准和Ie9+浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8-用e.cancelBubble属性来阻冒泡,注意ie9不支持cancelBubble属性(设置后不生效),但chrome.safari.opera.firefox都支持cancelBubble属性. Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能
-
JavaScript中使用stopPropagation函数停止事件传播例子
JS中的事件默认是冒泡方式,逐层往上传播,可以通过stopPropagation()函数停止事件在DOM层次中的传播.如以下例子: HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>stopPropagation()使用 - 琼台博客</title> </head> <body> <button&
-
jquery取消事件冒泡的三种方法(推荐)
1.通过返回false来取消默认的行为并阻止事件起泡. jQuery 代码: $("form").bind( "submit", function() { return false; } ); 2.通过使用 preventDefault() 方法只取消默认的行为. jQuery 代码: $("form").bind( "submit", function(event){ event.preventDefault(); } );
-
关于捕获用户何时点击window.onbeforeunload的取消事件
Detecting When The User Has Clicked Cancel One of the things you may want to do is to be notified when the user clicks cancel, aborting a page unload. Unfortunately there's no way to be immediately notified. The best you can do is to set a unique glo
-
JS传播事件、取消事件默认行为、阻止事件传播详解
1.事件处理程序的返回值 通常情况下,返回值false就是告诉浏览器不要执行这个事件相关的默认操作.例如,表单提交按钮的onclick事件处理程序能通过返回false阻止浏览器提交表单,再如a标签的onclick事件处理程序通过返回false阻止跳转href页面.类似地,如果用户输入不合适的字符,输入域上的onkeypress事件处理程序能通过返回false来过滤键盘输入. 事件处理程序的返回值只对通过属性注册的处理程序才有意义. 2.调用顺序 文档元素或其他对象可以为指定事件类
-
js如何取消事件冒泡
复制代码 代码如下: function stopBubble(e) { //如果传入了对象,那么就是非IE浏览器,才用W3C标准方法 if (e || e.stopPropagation) { e.stopPropagation(); } else { //才用IE的停止事件冒泡的方法 window.event.CancelBubble = true; } }
-
JavaScript实现事件的中断传播和行为阻止方法示例
事件传播 MicroSoft的设计是当事件在元素上触发时,该事件将接着在该节点的父节点触发,以此类推,事件一直沿着DOM树向上传播,直到到达顶层对象document元素.这种自底向上的事件传播方式称为"事件冒泡",也就是事件传播. 如何中断事件的传播? stopPropagation() w3c取消冒泡 cancleBubble = true IE取消冒泡 取消事件默认效果: returnValue = false IE 取消事件效果 defaultPrevent() w3c取消事件效
-
JavaScript实现数字前补“0”的五种方法示例
本文实例讲述了JavaScript实现数字前补"0"的五种方法.分享给大家供大家参考,具体如下: 众所周知JavaScript中的数字是没有前置0的,因此需要我们自己进行操作来添加前置0,而且还得转换成字符串. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q
-
JavaScript实现读取与输出XML文件数据的方法示例
本文实例讲述了JavaScript实现读取与输出XML文件数据的方法.分享给大家供大家参考,具体如下: 一.介绍 通过JavaScript读取XML文档中数据的方法很多. 其根本的思路就是:首先在后台加载XML文档,然后通过JavaScript获取文档中所需的数据,最后应用HTML展示获取的数据. 二.获取XML元素的属性值的应用 下面应用attributes属性和getNamedItem()方法获取一个指定的XML文档中的属性值. 三.代码 首先创建一个XML文档,并且为指定的元素设置属性,程
-
JavaScript简单实现合并两个Json对象的方法示例
本文实例讲述了JavaScript简单实现合并两个Json对象的方法.分享给大家供大家参考,具体如下: $.mergeJsonObject = function(jsonbject1, jsonbject2) { var resultJsonObject = {}; for (var attr in jsonbject1) { resultJsonObject[attr] = jsonbject1[attr]; } for (var attr in jsonbject2) { resultJso
-
Javascript循环删除数组中元素的几种方法示例
本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面来看看详细的介绍: 发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利运行. 下面以一段Javascript代码为例演示这一过程. (function () { var arr = [1,2,2,3,4,5]; var len = arr.lengt
-
JavaScript实现动态添加Form表单元素的方法示例
本文实例讲述了JavaScript实现动态添加Form表单元素的方法.分享给大家供大家参考,具体如下: 之前写过类似的文章(如:javascript实现的动态添加表单元素input,button等),现在看来比较初级,弄一个高级的简单的 情景: 后台要上传游戏截图,截图数量不确定,因此使用动态添加input节点的方法去实现这个效果 主要用到的函数有: document.getElementById(); objNode.parentNode; objNode.cloneNode(); objNo
-
JavaScript遍历查找数组中最大值与最小值的方法示例
本文实例讲述了JavaScript遍历查找数组中最大值与最小值的方法.分享给大家供大家参考,具体如下: <script language="javascript"> // 查找数组中最小值 function mathMin(arrs){ var min = arrs[0]; for(var i = 1, ilen = arrs.length; i < ilen; i+=1) { if(arrs[i] < min) { min = arrs[i]; } } ret
-
javascript设计模式之Adapter模式【适配器模式】实现方法示例
本文实例讲述了javascript设计模式之Adapter模式.分享给大家供大家参考,具体如下: 所谓Adapter模式就是适配器模式,主要是指使两个原本没有关联的类结合一起使用. JS实现Adapter模式示例如下: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="json.js"&g
-
JavaScript为事件句柄绑定监听函数实例详解
本文实例讲述了JavaScript为事件句柄绑定监听函数的方法.分享给大家供大家参考,具体如下: 在JavaScript中为Dom元素绑定事件监听函数是一件非常常见的事情,但这里也有许多的Bug.各种浏览器对于事件绑定都提供了很多方法,但可靠的只有3中: 1.传统的绑定方法: elem.onclick = function( event ){ alert(event.type + 'this.innerHTML'); }; a.传统的绑定方法,非常简单稳定,函数体内的this指向的也是指向正在处
-
关于JavaScript 的事件综合分析第1/2页
A 事件流(event flow ) 事件模型分为两种:冒泡型事件.捕获型事件. 冒泡型(dubbed bubbling )事件:指事件按照从最精确的对象到最不精确的对象的顺序逐一触发. 捕获型(event capturing )事件:它与冒泡型事件相反,指事件按照从最不精确的对象到最精确的对象的顺序逐一触发. 捕获型事件也被称作自顶向下(DOM层次)的事件模型. 由于IE 浏览器不支持捕获型事件,因此并没有被广泛应用. B 事件监听 i > 通用监听方法 示例一: 复制代码 代码如下: <p
随机推荐
- js正则表达式中的单行模式与多行模式实例分析
- SQL Server 2005基础知识详细整理
- 全面了解Python的getattr(),setattr(),delattr(),hasattr()
- asp.net使用Socket.Send发送信息及Socket.SendFile传输文件的方法
- Javascript自执行匿名函数(function() { })()的原理浅析
- VS2015在升级到Update2之后运行Cordova项目异常的解决方案
- javascript 层展开/关闭,带缓冲效果
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- ASP中实现执行定时任务的方法
- 深入理解JavaScript系列(15) 函数(Functions)
- Linux下的软件开发
- 站长必知:域名选取的十大技巧
- 解决Android Studio导入项目非常慢的办法
- Android编程中FileOutputStream与openFileOutput()的区别分析
- springboot下使用mybatis的方法
- 基于MVC5中的Model层开发数据注解
- nodejs 递归拷贝、读取目录下所有文件和目录
- php中钩子(hook)的原理与简单应用demo示例
- 分享Win10 1903过TP的双机调试问题
- Spring组件开发模式支持SPEL表达式