事件捕获
事件捕获是由Netscape Communicator团队提出来的,是先由最上一级的节点先接收事件,然后向下传播到具体的节点。(向下)
事件冒泡
事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。(向上)
事件流
"DOM2级事件”规定的事件流包含三个阶段:事件捕获阶段,处于目标阶段和事件冒泡阶段。
阻止冒泡
e.stopPropagation()
IE: window.event.cancelBubble = true
阻止事件默认行为
e.preventDefault()
return false(javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡。)
IE: e.returnValue = false
事件委托/事件代理
事件代理(Event Delegation),又称之为事件委托。即是把原本需要绑定在子元素的响应事件(click、keydown......)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。
<ul id='box'>
<li>aaa</li>
<li>bbb</li>
</ul>
const box = document.getElementById('box')
box.onclick = function (e) {
console.log(e.target) //打印的是实际点击的li
}
jquery实现
$('#box').on('click','li',function(){})
网友评论