可能没说清楚我的意思是
this.addEvent("click", obj, this.tabEvent);
this.addEvent("click", obj, _tabEvent);
this.addEvent("click", obj, eventFun);
这三个事件添加后 各个函数内部this的返回对象.
代码里仅仅是实现了第一种
this.addEvent("click", obj, this.tabEvent);
this.addEvent("click", obj, _tabEvent);
this.addEvent("click", obj, eventFun);
这三个事件添加后 各个函数内部this的返回对象.
代码里仅仅是实现了第一种
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
#test{
padding:3px;
background-color:#CCCCCC;
}
#test span{ border:1px solid #fff; }
</style>
</head><body>
<div id="test"><span>tab</span><a>more</a></div>
<script type="text/javascript">
function eventFun(){
alert(this.nodeName);
}
var tab = function(){
var _this = this;
this.tabEvent = function(e){
e = (e.target || window.event.srcElement);
alert(e.nodeName)
}
this.addEvent = function(eventName, obj, fun){
if(obj.attachEvent){
obj.attachEvent("on" + eventName, fun);
} else if(obj.addEventListener){
obj.addEventListener(eventName, fun, false);
}
}
this.init = function(obj){
obj.index = 1;
this.addEvent("click", obj, this.tabEvent);
function _tabEvent(e){
alert(this.nodeName);
}
}
}
var t = new tab();
t.init(document.getElementById("test"));
</script>
</body>
</html>
e = (e.target || window.event.srcElement);
这个是获得触发事件的节点
如果是节点内部还有子元素
将返回点击到的子元素 而不是被绑定的节点.