target和currentTarget的区别
target在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。只有当事件流处在目标阶段的时候,两个的指向才是一样的, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(注册该事件的对象)(一般为父级)。this指向永远和currentTarget指向一致(只考虑this的普通函数调用)。
开始学习Flex,会在别人的代码中经常看到target和currentTarget这两个属性,一般是event.target、event.currentTarget,那他们两个有什么区别呢?
简单说,target是事件的调用对象(event dispatcher),currentTarget是事件的处理对象(event processor)
以一个实例来说吧
1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" name="app"
3 initialize="init()">
4
5 <mx:Button id="btn" name="btn" label="按钮1"/>
6
7 <mx:Button id="btn2" name="btn2" label="按钮2" click="clickHandler(event)" />
8
9 <mx:Script>
10 <![CDATA[
11 import mx.controls.Alert;
12 private function init(): void
13 {
14 addEventListener(MouseEvent.CLICK, clickHandler);
15 }
16
17 private function clickHandler(event: MouseEvent): void
18 {
19 Alert.show("target: " + (event.target as DisplayObject).name
20 + "\ncurrentTarget: " + (event.currentTarget as DisplayObject).name);
21 }
22 ]]>
23 </mx:Script>
24 </mx:Application>
25
说明:
- 点击btn,btn是事件发送者,因此,target是btn;
- app注册了事件监听器,用于监听MouseEvnet.Click事件,是事件处理者,因此currentTarget是app
- btn2自己注册了click事件,那么btn2既是事件发送者,又是处理者,因此,target和currentTarget都是btn2,这种情况下,两者是一致的
- 同时注意,由于app注册了鼠标点击事件,在点击btn2的时候,首先响应的是app的处理器,然后才是btn2的处理器
通过上面的分析,应该比较清楚的区分什么时候用target,什么时候用currentTarget了,在实际编程中实践几次,就不会感到迷惑了。
target和currentTarget的区别的更多相关文章
- 事件冒泡和事件捕获以及解释target和currenttarget的区别
冒泡和捕获的区别是冒泡事件是先触发子元素事件,再触发父元素事件,这个是冒泡.捕获是先触发父元素事件,再触发子元素事件.简单的来说,冒泡的顺序是由内到外,捕获的顺序是由外到内 举例:<!DOCTY ...
- 关于js中event的target和currentTarget的区别
今天又遇到这个问题了,总是搞不清楚target和currentTarget的区别,百度搜索的时候看到一遍文章解释得很清楚,特意记录下录,以备不时之需: target与currentTarget的区别? ...
- js中的target与currentTarget的区别<转>
关于js中target与currentTarget的区别的关键在于他们所处在的事件流的阶段是不一样的,target处于事件流的目标阶段,currentTarget处理事件流的捕获.处于目标阶段和冒泡阶 ...
- 微信小程序的target和currentTarget的区别
https://www.jb51.net/article/160886.htm 在小程序的事件回调触发时,会接收一个事件对象,事件对象的参数中包含一个target和currentTarget属性,接下 ...
- JavaScript tips —— target与currentTarget的区别
定义 以下是红宝书的描述 属性/方法 类型 读/写 说明 currentTarget Element 只读 其事件处理程序当前正在处理事件的那个元素 target Element 只读 事件的目标 M ...
- js中event的target和currentTarget的区别
js中的event对象包含很多有用的信息 target:触发事件的元素. currentTarget:事件绑定的元素. 两者在没有冒泡的情况下,是一样的值,但在用了事件委托的情况下,就不一样了,例如: ...
- target与currentTarget的区别?
通俗易懂的说法: 比如说现在有A和B, A.addChild(B) A监听鼠标点击事件 那么当点击B时,target是B,currentTarget是A 也就是说,currentTarget始终是监听 ...
- target 和 currentTarget的区别
target是当前点击的组件,currentTarget是扑捉到事件的组件
- target与currentTarget与this的区别
target与currentTarget与this的区别: target在事件流的目标阶段:currentTarget在事件的捕获.目标及冒泡阶段. 只有当事件流处在目标阶段的时候,二者的指向才是一致 ...
随机推荐
- Beam Search(集束搜索/束搜索)
找遍百度也没有找到关于Beam Search的详细解释,只有一些比较泛泛的讲解,于是有了这篇博文. 首先给出wiki地址:http://en.wikipedia.org/wiki/Beam_searc ...
- httpd服务的安装、配置和关于php留言本网站的搭建
搭建本地yum仓库的方法 http://www.cnblogs.com/lql123/p/5952788.html yum install httpd -y #安装httpd yum install ...
- Gerald is into Art
Gerald is into Art Gerald bought two very rare paintings at the Sotheby's auction and he now wants t ...
- Android在代码中使用布局文件中的一个组件
使用前必须要把组件与其父组件的关系断开,比如有一个组件的名称为scrollChildLayout,则可以使用下面的代码进行分离 ((ViewGroup)scrollChildLayout.getPar ...
- 解析Hibernate中的持久化—ORM(转载)
最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的, ...
- Sql Server xml 类型字段的增删改查
1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...
- canvas 时钟+自由落体
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Maven仓库
http://search.maven.org/#search%7Cga%7C1%7C
- 第十篇.bootstrap轮播
使用bootstrap的轮播插件可以向站点添加滑块,内容可以是图像,内嵌框架,视频或其它任何内容,使用轮播插件需要引入bootstrap.min.js. <div id="carous ...
- Ant_的最完整build.xml解释
Ant的概念 Make命令是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平 ...