- 浏览: 311438 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
在浏览器文档模型DOM中,事件是指因为某种具体的交互行为发生,由被作用的元素发出,再由浏览器响应的过程。常见的事件有:click,onmouseover,onblur等等。
DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流。
按照DOM事件流的观点,事件在树中传播的方向就有两个,一个是从根结点向子结点流动,以及子结点向根结点传播的方向。前者是Netscape Navigator对事件流的实现:捕获型事件(Capturing),后者是IE的实现方式,即冒泡型事件(Bubbling)(下图作者小小子 )。
DOM标准事件模型:
因为两个不同的模型都有其优点和解释,DOM标准支持捕获型与冒泡型,可以说是它们两者的结合体。它可以在一个DOM元素上绑定多个事件处理器,并且在处理函数内部,this关键字仍然指向被绑定的DOM元素,另外处理函数参数列表的第一个位置传递事件event对象。
首先是捕获式传递事件,接着是冒泡式传递,所以,如果一个处理函数既注册了捕获型事件的监听,又注册冒泡型事件监听,那么在DOM事件模型中它就会被调用两次。
在注册事件时主要有三种方法:
1.HTML挂载法。
<div onclick=”alert(this.innerHTML);”>内容<div>
这是很普遍的做法,主要优点是方便,容易理解。但是最近有观点认为这种方法对html的web语义产生了破坏,建议将事件注册写到js模块中,从而将html与js分离。
2.js赋值法。
element.onclick = function(){alert(this.innerHTML);}
注意:以上两种方法只支持事件冒泡方式,不支持捕获方式。
3.添加事件监听方法。
element.addEventListener(‘click’, observer, useCapture);
addEventListener方法接受三个参数。第一个参数是事件名称,值得注意的是,这里事件名称与IE的不同,事件名称是没’on’开头的 ;第二个参数observer是回调处理函数;第三个参数注明该处理回调函数是在事件传递过程中的捕获阶段被调用还是冒泡阶段被调用,true表示注册到捕获阶段,false表示注册到冒泡阶段。
移除已注册的事件监听器调用element的removeEventListener即可,参数不变.
element.removeEventListener(‘click’, observer, useCapture);
特别的,在IE中使用attachEvent方法来实现。
element.attachEvent(‘onclick’, observer);
attachEvent接受两个参数。第一个参数是事件名称,第二个参数observer是回调处理函数。这里得说明一下,有个经常会出错的地 方,IE下利用attachEvent注册的处理函数调用时this指向不再是先前注册事件的元素,这时的this为window对象了。IE只支持事件注册到冒泡阶段。
要移除先前注册的事件的监听器,调用element的detachEvent方法即可,参数相同。
element.detachEvent(‘onclick’, observer);
事件注册到不同阶段的举例,下面是典型的冒泡方式:
<p onclick="javascript:alert('外面的p被点击!')"> <input type="button" value="注册到冒泡阶段,点击我查看效果" onclick="javascript:alert('里面的button被点击!')"/> </p>
下面是注册到冒泡阶段的代码,使用了addEventListener方法。注意addEventListener的第三个参数在这里是true,这意味 着将事件click注册到了捕获阶段,也就是外面的p将先得到这个事件,然后才是内层的button。(以下例子请采用Firefox或chrome等非 ie浏览器测试)
<p id="js_out2"> <input type="button" id="js_in2" value="注册到捕获阶段,点击我查看效果"/> </p> <script type="text/javascript"> document.getElementById("js_out2").addEventListener('click', function(){alert('外面的div被点击!');}, true); document.getElementById("js_in2").addEventListener('click',function(){alert('里面的div被点击!');},true); </script>
再放两个例子增加读者对捕获和冒泡的印象。
[转自 :http://www.ilovespringna.com/?p=34023 ]
发表评论
-
循环数组的逻辑怎么写
2015-03-23 10:24 643应用场景这样的: var imgUrls = [ ... -
发布`代码生成器`
2014-11-17 00:45 580闲话不说,直接上地址 npm: https://www. ... -
MutationObserver
2014-10-27 15:29 1090MutationObserver MutationObse ... -
a simple mvvm library - bird
2014-10-09 18:26 726see here:https://github.com/i ... -
遍历dom tree是一件相当耗时的事情
2014-09-23 01:15 752遍历dom tree是一件相当耗时的事情,尤其是在遍历的同时 ... -
今天再讲下js里的继承
2014-09-18 00:27 693js的继承说简单也很简单,请看: function ... -
Text 类型
2014-09-05 18:52 841文本节点由Text类型表 ... -
JavaScript插入动态脚本
2014-09-05 18:47 635动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该 ... -
innerHTML插入<style>元素
2014-09-05 18:37 1157通过innerHTML写入<style>元素没 ... -
CSS实现相对浏览器窗口定位彻底研究
2014-09-05 18:33 3718Web Developer / Designer 经常需要将 ... -
JavaScript插入动态样式
2014-09-05 18:07 604能够把CSS样式包含到HTML页面中的元素有两个。其中,& ... -
再理解jQuery;delete原型属性
2014-05-13 22:05 1855以前用jQuery的时候曾粗略看了它的源码,但却不求甚解。 ... -
javascript &&和||
2012-07-23 00:38 700一直以为 && 和 || ... -
undefined 和 void 0 的区别
2012-07-20 11:15 701在读backbone源码时看见这么一段代码: if ( ... -
Fiddler - 前端开发值得拥有
2012-07-16 14:41 825最近换了新工作,搬了新家,换了新室友,一切都在重新开始。 ... -
说说我的web前端之路,分享些前端的好书
2012-07-16 14:38 791WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ... -
JavaScript实现 页面滚动图片加载
2012-07-16 14:29 685又到了这个月的博客时间了,原计划是打算在这个月做一个的功 ... -
JavaScript 操作 Cookie
2012-07-16 11:18 682从事web开发也有些日 ... -
Javascript定义类(class)的三种方法
2012-07-12 12:35 584程序员们做了很多探索,研究如何用Javascript模拟”类” ... -
服务端解决跨源共享
2012-06-21 10:18 4514跨源资源共享是web开发领域中一个非常有趣的话题,互联网 ...
相关推荐
本文为大家简单介绍了javascript事件委托的用法及其好处,供大家参考,具体内容如下 事件委托:利用冒泡的原理,把事件加到父级上,触发执行效果, 好处:提高性能,新添加的元素还会有之前的事件。 event对象:事件...
JavaScript中的“大事托付”(Delegation)是一种事件处理策略,它利用事件冒泡的特性来提高代码效率和性能。事件冒泡是指事件从最深的节点开始,然后逐级向上层元素传播事件。在大型或动态的DOM结构中,大事托付...
校园暴力事件简析.pdf
本文的实例简析不仅帮助初学者理解了JavaScript中键盘事件的基本操作,还提供了一些进阶的提示和技巧。对于需要深入学习JavaScript键盘事件处理的开发者来说,本文是一个很好的起点。通过实践这样的基础实例,开发者...
JavaScript 实现自动填写表单的知识点涵盖面很广,涉及到了前端页面元素的定位、JavaScript 的 DOM 操作,以及如何利用浏览器内置功能来方便地使用这些脚本。下面将详细解析这些知识点。 首先,页面元素定位是关键...
Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战...
NR旨在支持更高的数据速率、更低的延迟以及更高的系统容量和大规模设备连接。本文将探讨NR中的一个关键组成部分:PRACH(Physical Random Access Channel,物理随机接入信道)信道,及其相关的随机接入流程。 首先...
JavaScript MapReduce工作原理简析 MapReduce是一种编程模型,由谷歌在2004年的OSDI会议上提出,它主要用于大规模数据集的并行处理。该模型借鉴了函数式编程的概念,将复杂的数据处理任务分解为两个主要阶段:Map...
Ray Ball和Philip Brown以及Eugene Fama等人的工作进一步推动了这一领域的发展,他们引入了现代事件研究的框架,特别是关于信息含量和股利支付的分析。 金融事件研究的一般步骤包括以下几个阶段: 1. **定义事件...
【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf...
【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf...
3. 声明式事件处理:通过声明方式定义和处理事件,简化系统中的事件驱动流程。 4. 数据格式转换:自动处理不同客户机和服务间的数据格式差异,实现数据的无缝交换。 5. 集中资源管理:集中管理SOA资源,如服务、...
简析Win8网络和共享中心.docx
STL简析STL简析STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习
Web3.0概念下的场景生态简析 Web3.0概念是指下一代互联网的发展方向,旨在解决用户与用户之间的信息互动、提升信息的传递效率、实现信息交互过程中的“可信”与“沉浸”。在当下,Web3.0概念受到关注的原因来自于现...
总结来说,`createDelegate`是一个实用的工具,它帮助开发者在JavaScript中维护函数调用的上下文,尤其是在处理事件处理和异步回调时。通过学习和理解`createDelegate`的工作原理和用法,我们可以编写出更加健壮和可...