target表示发生事件的元素,发生在目标阶段
currentTarget表示绑定事件的元素,发生在冒泡,目标,捕获阶段
案例:
<div id="outer" style="background:#099">
click outer
<p id="inner" style="background:#9C0">click inner</p>
</div>
<script type="text/javascript">
function G(id){
return document.getElementById(id);
}
function addEvent(obj, ev, handler){
if(window.attachEvent){
obj.attachEvent("on" + ev, handler);
}else if(window.addEventListener){
obj.addEventListener(ev, handler, false);
}
}
function test(e){
alert("e.target.tagName : " + e.target.tagName + "\n e.currentTarget.tagName : " + e.currentTarget.tagName);
}
var outer = G("outer");
var inner = G("inner");
//addEvent(inner, "click", test);
addEvent(outer, "click", test);
</script>
同时注意,this和currentTarget的对象 永远保持一致。
事件流有三种阶段:捕获 目标 冒泡。需要判断每个阶段有哪些对象。
网友评论