目录
1、注册事件(绑定事件)
1.1、元素注册的两种方式
给元素添加事件,称为注册事件或者绑定事件。
传统方式:元素名.on开头的事件 = function(){}
方法监听方式:addEventListener(type,listener[,useCaptrue])
该方法将指定的监听器注册到eventTArget(事件对象)上,当该对象触发指定的事件时,就会执行事件处理函数。
- type:事件类型字符串 不带on
- listener:事件处理函数,事件发生时,会调用该监听函数
- useCaptrue:可选参数,是一个布尔值,默认时false,代表事件流为冒泡事件
2、删除事件
2.1、删除事件的两种方式
传统方式:元素名.on开头的事件名 = null 可以实现解绑事件
监听方式:removeEventListener(type,函数名)
<script>
var div = document.querySelector('div');
//传统
// div.onclick = function(){
// alert('111');
// div.onclick = null;
// }
//监听
div.addEventListener('click',fn);
function fn(){
alert(111);
div.removeEventListener('click',fn);
}
</script>
3、DOM事件流
3.1、DOM事件流概述
事件流描述的是从页面中接收事件的顺序。
事件发生时会在元素节点之间按照特定的顺序传播,整个传播过程即DOM事件流
3.2、DOM事件流的三个阶段
- 捕获阶段
- 当前目标阶段
- 冒泡阶段
注意:
- js代码只能执行捕获或者冒泡其中一个阶段
- onclick和attachEvent(IE)只能得到冒泡阶段
- 捕获阶段 参数(useCapture)为true
- 冒泡阶段 参数为false 默认为false
4、事件对象
4.1、事件对象概述
写在监听函数的小括号里面,当作形参来使用。
- 事件对象有了事件才存在,是系统自动生成的,不需要我们设置
- 事件对象是事件的一系列相关数据的集合,例如鼠标坐标,点击对象等
- 事件对象由为我们自己命名,没有特定的命名规则
- 事件对象 ie9以上才可以使用
4.2、事件对象的常用属性和方法
4.2.1、e.target 返回触发事件的对象
e.target和this的区别:
- this返回的绑定的对象
- target返回的是触发事件的对象
4.2.2、e.preventDefault() 阻止默认行为
return false 也可以阻止,但是人return 后面的代码不执行,而且适用于传统方式注册的事件。
让链接不跳转等。
5、阻止事件冒泡
5.1、Dom推荐的标准方法
stopPropagation() propagation 传播
6、事件委托
6.1、事件委托概述
事件委托也称为事件代理。
6.2、事件委托原理
给父节点设置事件监听器,利用冒泡原理影响子节点。
<ul>
<li>
知否知否
</li>
<li>
知否知否
</li>
<li>
知否知否
</li>
<li>
知否知否
</li>
<li>
知否知否
</li>
</ul>
<script>
var ul = document.querySelector('ul');
ul.addEventListener('click',function(e){
// alert('知否知否');
e.target.style.backgroundColor = 'orange';
})
</script>
7、常用的鼠标事件
7.1、contextmenu禁用右键菜单
7.2、禁止选中文字selectstart()
8、常用的键盘事件
8.1、keyup
按键弹起的时候触发
8.2、keydown
按键按下的时候触发
8.3、keypress
按键按下的时候触发
不能识别功能键 ctrl等
8.4、键盘事件对象
keycode属性:可以得到相应键的ASCII码值。
<input type="text" id="search"> //设置文本框
<script>
var input = document.querySelector('#search');//获取元素
document.addEventListener('keydown',function(e) {
if (e.keyCode == 83){ //keycode 可以得到当前事件对象的ASCLL值 s的值为83
input.focus(); //获得焦点
}
console.log(e.keyCode);
})
</script>
- keyup和keydown不区分字母大小写 keypress区分
- keyup和keydown 识别功能键
- 在实际应用中,更多的使用keydown