update: readme
This commit is contained in:
		
							parent
							
								
									43247d22d1
								
							
						
					
					
						commit
						00cf042dd2
					
				@ -21,7 +21,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
    var btn = document.getElementsByTagName("button")[0];
 | 
			
		||||
 | 
			
		||||
    //这种事件绑定的方法容易被层叠。
 | 
			
		||||
    //这种事件绑定的方式,如果绑定多个,则后面的会覆盖掉前面的
 | 
			
		||||
    btn.onclick = function () {
 | 
			
		||||
        console.log("事件1");
 | 
			
		||||
    }
 | 
			
		||||
@ -41,7 +41,7 @@
 | 
			
		||||
事件2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
我们可以看到,这种绑定事件的方式,会层叠掉之前的事件。
 | 
			
		||||
我们可以看到,`DOM对象.事件 =  函数`的这种绑定事件的方式:一个元素的一个事件只能绑定一个响应函数。如果绑定了多个响应函数,则后者会覆盖前者。
 | 
			
		||||
 | 
			
		||||
### DOM2的写法:addEventListener
 | 
			
		||||
 | 
			
		||||
@ -54,9 +54,9 @@
 | 
			
		||||
 | 
			
		||||
参数解释:
 | 
			
		||||
 | 
			
		||||
- 参数1:事件名(注意,没有on)
 | 
			
		||||
- 参数1:事件名的字符串(注意,没有on)
 | 
			
		||||
 | 
			
		||||
- 参数2:事件名(执行函数)
 | 
			
		||||
- 参数2:回调函数:当事件触发时,该函数会被执行
 | 
			
		||||
 | 
			
		||||
- 参数3:**true表示捕获阶段触发,false表示冒泡阶段触发(默认)**。如果不写,则默认为false。【重要】
 | 
			
		||||
 | 
			
		||||
@ -69,7 +69,7 @@
 | 
			
		||||
    var btn = document.getElementsByTagName("button")[0];
 | 
			
		||||
 | 
			
		||||
    // addEventListener: 事件监听器。 原事件被执行的时候,后面绑定的事件照样被执行
 | 
			
		||||
    // 这种写法不会出现层叠。(更适合团队开发)
 | 
			
		||||
    // 这种写法不存在响应函数被覆盖的情况。(更适合团队开发)
 | 
			
		||||
    btn.addEventListener("click", fn1);
 | 
			
		||||
    btn.addEventListener("click", fn2);
 | 
			
		||||
 | 
			
		||||
@ -93,7 +93,14 @@
 | 
			
		||||
    事件2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
我们可以看到,这种绑定事件的方式,不会层叠掉之前的事件。
 | 
			
		||||
我们可以看到,`addEventListener()`这种绑定事件的方式:
 | 
			
		||||
 | 
			
		||||
- 一个元素的一个事件,可以绑定多个响应函数。不存在响应函数被覆盖的情况。
 | 
			
		||||
 | 
			
		||||
- 事件被触发时,响应函数会按照函数的绑定顺序执行。
 | 
			
		||||
 | 
			
		||||
- `addEventListener()`不支持 IE8 及以下的浏览器。在IE8中可以使用`attachEvent`来绑定事件(这里就不详细展开了)。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 事件对象
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@
 | 
			
		||||
 | 
			
		||||
但是,上面的做法过于消耗内存和性能。**我们希望,只绑定一次事件,即可应用到多个元素上**,即使元素是后来添加的。
 | 
			
		||||
 | 
			
		||||
因此,比较好的方法就是把这个点击事件绑定到他的父层,也就是 `ul` 上,然后在执行事件的时候再去匹配判断目标元素。如下:
 | 
			
		||||
因此,比较好的方法就是把这个点击事件绑定到他的父层,也就是 `ul` 上,然后在执行事件函数的时候再去匹配判断目标元素。如下:
 | 
			
		||||
 | 
			
		||||
```html
 | 
			
		||||
    <!DOCTYPE html>
 | 
			
		||||
@ -67,7 +67,7 @@
 | 
			
		||||
    </body>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
上方代码,为父节点注册click事件,当子节点被点击的时候,click事件会从子节点开始**向上冒泡**。**父节点捕获到事件**之后,开始执行方法体里的内容:通过判断 e.target 拿到了被点击的子节点li。从而可以获取到相应的信息,并作处理。
 | 
			
		||||
上方代码,为父节点注册 click 事件,当子节点被点击的时候,click事件会从子节点开始**向父节点冒泡**。**父节点捕获到事件**之后,开始执行方法体里的内容:通过判断 event.target 拿到了被点击的子节点`<a>`。从而可以获取到相应的信息,并作处理。
 | 
			
		||||
 | 
			
		||||
换而言之,参数为false,说明事件是在冒泡阶段触发(子元素向父元素传递事件)。而父节点注册了事件函数,子节点没有注册事件函数,此时,会在父节点中执行函数体里的代码。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							@ -1,9 +1,17 @@
 | 
			
		||||
 | 
			
		||||
## 项目介绍
 | 
			
		||||
 | 
			
		||||
- 项目地址:<https://github.com/qianguyihao/Web>
 | 
			
		||||
项目地址:<https://github.com/qianguyihao/Web>
 | 
			
		||||
 | 
			
		||||
前端入门和进阶学习笔记。从零开始学前端,做一名精致的前端工程师。持续更新中。本项目的主要作用有:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- 网上的大部分入门教程,都不太适合初学者,本项目争取照顾到每一位入门者的同理心。
 | 
			
		||||
 | 
			
		||||
- 帮助前端同学提供一个精品学习路线和资源,提高学习效率,少走很多弯路。
 | 
			
		||||
 | 
			
		||||
- 可以当做前端字典,随时翻阅,查漏补缺。
 | 
			
		||||
 | 
			
		||||
前端入门和进阶学习笔记。从零开始学前端,做一个web全栈工程师。持续更新中...
 | 
			
		||||
 | 
			
		||||
维护这个项目的初衷,可以看这篇文章:[《裸辞两个月,海投一个月,从Android转战Web前端的求职之路》](https://www.cnblogs.com/qianguyihao/p/8732781.html)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user