在IE中使用attachEvent给一个元素绑定行为时,事件中的this指针会指向window对象,而不是元素本身,但使用addEventListener或者以elem.onclick = someFunc这种形式绑定的行为则不会出现这种问题。解决的问题也很简单,就是通过call或者apply把this指针引向元素自己,jQuery中也是这样做的。
var _ele = document.getElementById('myElement');
try{
_ele.addEventListener('click',clickFunc,false);
}catch(e){
try{
_ele.attachEvent('onclick',function(){clickFunc.call(_ele)});
}catch(e){};
}
这样函数clickFunc中的this指针就会指向被绑定行为的元素了。