js事件
1、事件三要素:
事件源:要触发的对象 (一般是名词,事件发起者,比如开关按钮)
事件:怎么触发这个事情 (一般是动词,触发事件,比如点击开关)
事件处理程序:发生了什么事情 (处理结果,比如灯亮了)
事件源.事件 = function() {
事件处理函数
}
添加,移除js事件
<button id='btn'>点击</button>
let btn= document.getElementById('btn')
function fn(){
alert('第一次点击')
}
btn.onclick=fn
■ btn.addEventlistener('click',fn)
btn.onclick=function fn(){
alert('第一次点击')
btn.onclick=null
}
function fn(){
alert('第一次点击')
■ btn.removeEventListener('click',fn)
}
btn.addEventlistener('click',fn)
事件冒泡捕获
事件冒泡:当点击子元素的时候,先查看子元素是否有点击事件,如果没有,向上查看,看看父亲有没有,有执行,然后查看爷爷...以此类推...
事件三个阶段:
■
■
■
<div class="father-box">
<div class="son-box"></box>
</div>
let sonBox=document.querySelector('.son-box')
■
sonBox.onclick=function(event){
let e=event||window.event
if(e&&e.stopPropagetion){
e.stopPropagetion()
}else{
e.cancelBubble=true
}
}
事件代理/委托
<ul class="ul">
<li class="li">项目1</li>
<li class="li">项目2</li>
<li class="li">项目3</li>
<button class="btn">增加</button>
</ul>
let btn = document.querySelector('.btn')
let ul = document.querySelector('.ul')
let lis = document.querySelectorAll('.li')
btn.addEventListener('click', () => {
let li = document.createElement('li')
li.innerHTML = '新增项目'
ul.insertBefore(li, btn)
})
ul.addEventListener('click', function (event) {
if (event.target.nodeName === 'LI') {
alert(event.target.innerHTML)
}
})
常见事件
■
■
■
■
■
■
■
■
■
■
■
■