Skip to content

Commit ef08f67

Browse files
committed
update
1 parent e10a230 commit ef08f67

File tree

1 file changed

+107
-9
lines changed

1 file changed

+107
-9
lines changed

README.md

Lines changed: 107 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,18 +1155,116 @@ history.forward();
11551155
```
11561156

11571157
## 05-01
1158-
### 事件-知识点
1159-
* 编写一个通用的事件监听函数
1160-
* 描述事件冒泡流程
1161-
* 对于一个无线下拉加载图片的页面,如何给每个图片绑定事件
1162-
#### 知识点
1163-
* 通用事件绑定
1158+
#### 编写一个通用的事件监听函数
1159+
#### 描述事件冒泡流程
1160+
* DOM树形结构
1161+
* 事件冒泡
1162+
* 阻止冒泡
1163+
* 冒泡的应用
1164+
#### 对于一个无线下拉加载图片的页面,如何给每个图片绑定事件
1165+
* 使用代理
1166+
* 知道代理的有点
1167+
1168+
##### 通用事件绑定
1169+
11641170
```JavaScript
11651171
var btn = document.getElementById('btn1');
1166-
btn.
1172+
btn.addEventListener('click',function (event) {
1173+
console.log('clicked');
1174+
})
1175+
1176+
function bindEvent(elem,type,fn) {
1177+
elem.addEventListener(type,fn);
1178+
}
1179+
var a = document.getElementById('link1')
1180+
bindEvent(a,'click',function(e){
1181+
e.preventDefault(); //阻止默认行为
1182+
alert('clicked');
1183+
});
1184+
```
1185+
1186+
* 关于IE低版本的兼容性
1187+
* IE低版本使用attachEvent绑定事件,和W3C标准不一样
1188+
* IE低版本使用量非常少,很多网站早已不支持
1189+
* 建议对IE低版本的兼容性:了解即可,无需深究
1190+
* 如果遇到对IE低版本要求苛刻的面试,果断放弃
1191+
1192+
#### 事件冒泡
1193+
1194+
```html
1195+
<body>
1196+
<div id="div1">
1197+
<p id="p1">激活</p>
1198+
<p id="p2">取消</p>
1199+
<p id="p3">取消</p>
1200+
<p id="p4">取消</p>
1201+
</div>
1202+
<div id="div2">
1203+
<p id="p5">取消</p>
1204+
<p id="p6">取消</p>
1205+
</div>
1206+
</body>
1207+
```
1208+
1209+
```JavaScript
1210+
var p1 = document.getElementById('p1');
1211+
var body = document.body;
1212+
bindEvent(p1,'click',function (e) {
1213+
e.stopPropatation();
1214+
alert('激活');
1215+
});
1216+
bindEvent(body,'click',function(e){
1217+
alert('取消');
1218+
})
1219+
```
1220+
1221+
#### 代理
1222+
```html
1223+
<div id="div1">
1224+
<a href="#">a1</a>
1225+
<a href="#">a2</a>
1226+
<a href="#">a3</a>
1227+
<a href="#">a4</a>
1228+
<!-- 会随时新增更多a标签 -->
1229+
</div>
1230+
```
1231+
```JavaScript
1232+
var div1 = document.getElementById('div1');
1233+
div1.addEventListener('click',function (e) {
1234+
var target = e.target;
1235+
if (target.nodeName === 'A') {
1236+
alert(target.innerHTML);
1237+
}
1238+
})
1239+
```
1240+
#### 完善通用绑定事件的函数
1241+
1242+
```JavaScript
1243+
//使用代理
1244+
var div1 = document.getElementById('div1');
1245+
bindEvent(div1,'click','a',function (e) {
1246+
console.log(this.innerHTML);
1247+
})
1248+
```
1249+
1250+
```JavaScript
1251+
function bindEvent(elem,type,selector,fn) {
1252+
if (fn == null) {
1253+
fn = selector;
1254+
}
1255+
elem.addEventListener(type,function (e) {
1256+
var target;
1257+
if (selector) {
1258+
target = e.target;
1259+
if (target.matches(selector)) {
1260+
fn.call(target,e);
1261+
}
1262+
}else {
1263+
fn(e);
1264+
}
1265+
})
1266+
}
11671267
```
1168-
* 事件冒泡
1169-
* 代理
11701268
---
11711269

11721270
### JSDemo JS小程序

0 commit comments

Comments
 (0)