1. 事件冒泡
<div id = 'box1'><div id = 'box2'></div></div>
box1.onclick=fuction(){console.log(1)}
box2.onclick=function(event){
event.stopPropagation(); // 停止事件冒泡
event.cancleBubble = true; // ie 8以下阻止事件冒泡
event = event || window.event;
event.stopPropagation ? event.stopProgapation() : (event.cancleBubble = true);
};
2.注销事件 (删除事件)
bx.removeEventListener('click',chilidClick); // 必须为同一个方法
3.事件委托
window.onload = function(){
var oUl = document.getElementById("ul1");
oUl.onclick = function(ev){
var ev = ev || window.event;
var target = ev.target || ev.srcElement;
if(target.nodeName.toLowerCase() == 'li'){
alert(123);
alert(target.innerHTML);
}
} }
总结:
那什么样的事件可以用事件委托,什么样的事件不可以用呢?
适合用事件委托的事件:click,mousedown,mouseup,keydown,keyup,keypress。
值得注意的是,mouseover和mouseout虽然也有事件冒泡,但是处理它们的时候需要特别的注意,因为需要经常计算它们的位置,处理起来不太容易。
不适合的就有很多了,举个例子,mousemove,每次都要计算它的位置,非常不好把控,在不如说focus,blur之类的,本身就没用冒泡的特性,自然就不能用事件委托了。
网友评论