File tree Expand file tree Collapse file tree 1 file changed +15
-8
lines changed Expand file tree Collapse file tree 1 file changed +15
-8
lines changed Original file line number Diff line number Diff line change @@ -114,23 +114,30 @@ if (event.defaultPrevented) {
114
114
115
115
### Event.currentTarget,Event.target
116
116
117
- ` Event.currentTarget ` 属性返回事件当前所在的节点,即正在执行的监听函数所绑定的那个节点 。
117
+ 事件发生以后,会经过捕获和冒泡两个阶段,依次通过多个 DOM 节点。因此,任意时点都有两个与事件相关的节点,一个是事件的原始触发节点( ` Event.target ` ),另一个是事件当前正在通过的节点( ` Event.currentTarget ` )。前者通常是后者的后代节点 。
118
118
119
- ` Event.target ` 属性返回原始触发事件的那个节点,即事件最初发生的节点。事件传播过程中,不同节点的监听函数内部的` Event.target ` 与` Event.currentTarget ` 属性的值是不一样的,前者总是不变的,后者则是指向监听函数所在的那个节点对象。
119
+ ` Event.currentTarget ` 属性返回事件当前所在的节点,即事件当前正在通过的节点,也就是当前正在执行的监听函数所在的那个节点。随着事件的传播,这个属性的值会变。
120
+
121
+ ` Event.target ` 属性返回原始触发事件的那个节点,即事件最初发生的节点。这个属性不会随着事件的传播而改变。
122
+
123
+ 事件传播过程中,不同节点的监听函数内部的` Event.target ` 与` Event.currentTarget ` 属性的值是不一样的。
120
124
121
125
``` javascript
122
- // HTML代码为
126
+ // HTML 代码为
123
127
// <p id="para">Hello <em>World</em></p>
124
128
function hide (e ) {
125
- console .log (this === e .currentTarget ); // 总是 true
126
- console .log (this === e .target ); // 有可能不是 true
127
- e .target .style .visibility = ' hidden' ;
129
+ // 不管点击 Hello 或 World,总是返回 true
130
+ console .log (this === e .currentTarget );
131
+
132
+ // 点击 Hello,返回 true
133
+ // 点击 World,返回 false
134
+ console .log (this === e .target );
128
135
}
129
136
130
- para .addEventListener (' click' , hide, false );
137
+ document . getElementById ( ' para' ) .addEventListener (' click' , hide, false );
131
138
```
132
139
133
- 上面代码中,如果在 ` para ` 节点的 ` <em> ` 子节点上面点击,则 ` e.target ` 指向 ` <em> ` 子节点,导致 ` <em> ` 子节点(即 World 部分)会不可见。如果点击 Hello 部分,则整个 ` para ` 都将不可见 。
140
+ 上面代码中,` <em> ` 是 ` <p> ` 的子节点,点击 ` <em> ` 或者点击 ` <p> ` ,都会导致监听函数执行。这时, ` e.target ` 总是指向原始点击位置的那个节点,而 ` e.currentTarget ` 指向事件传播过程中正在经过的那个节点。由于监听函数只有事件经过时才会触发,所以 ` e.currentTarget ` 总是等同于监听函数内部的 ` this ` 。
134
141
135
142
### Event.type
136
143
You can’t perform that action at this time.
0 commit comments