冒泡
当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发
//取消冒泡
if(e.stopPropagation){
e.stopPropagation(); //w3c标准 IE不支持
}else{
e.cancelBubble = true; //以前只支持IE ,现在FireFox和Chrome都支持了
}
事件委托
/*将事件统一绑定给元素共同的祖先元素,当后代元素上的事件触发时,会一直冒泡到祖先元素
从而通过祖先元素的响应函数来处理事件。
事件委派是利用了冒泡,通过委派可以减少事件绑定的次数,提高程序的性能*/
u1.onclick = function(event){
event = event || window.event;
/* target event中的target表示的触发事件的对象*/
var target = event.target || event.srcElement; //兼容IE
//如果触发事件的对象是我们期望的元素,则执行否则不执行
if(---[target.className == "link" || target.nodeName=="A" 大写] ---){
// do it ..
}
};
事件的传播
"事件的传播
- W3C将事件传播分成了三个阶段
1.捕获阶段
- 在捕获阶段时从最外层的祖先元素,向目标元素进行事件的捕获,但是默认此时不会触发事件
2.目标阶段
- 事件捕获到目标元素,捕获结束开始在目标元素上触发事件
3.冒泡阶段
- 事件从目标元素向他的祖先元素传递,依次触发祖先元素上的事件
- 如果希望在捕获阶段就触发事件,可以将addEventListener()的第三个参数设置为true
一般情况下我们不会希望在捕获阶段触发事件,所以这个参数一般都是false
- IE8及以下的浏览器中没有捕获阶段"
网友评论