事件对象常见的属性和方法
1:e.target 返回触发事件的对象(标准)
2:e.srcElement 返回触发事件的对象(非标准ie 6~8)
<ul>
<li>1</li>
<li>2</li>
</ul>
var ul=document.querySelector('ul');
ul.addEventListener('click',function(e){
console.log(e.target); //返回触发事件的对象li,(点击li)
console.log(this); //返回绑定事件的对象ul
console.log(e.currentTarget); //和this相似,不支持ie 678
});
//兼容性写法
ul.onclick=function(e){
e=e || window.event;
var target=e.target || e.srcElement;
console.log(target);
}
3:e.type 返回事件的类型,比如 click mouseover
var div=document.querySelector('div');
div.addEventListener('click',fn);
function fn(e){
console.log(e.type); //返回click
}
4:e.returnValue 阻止默认事件(行为),非标准ie 6~8,比如不让链接跳转
var a=document.querySelector('a');
a.onclick=function(e){
e.returnValue; //阻止默认行为 ie678
return false; //阻止默认行为 兼容(只限于传统注册方式,且后面的代码不执行)
};
5:e.preventDefault() 阻止默认事件(行为),标准,比如不让链接跳转,按钮不提交
var a=document.querySelector('a');
a.addEventListener('click',function(e){
e.preventDefault(); //阻止a的跳转效果 标准
});
6:e.stopPropagation() 阻止冒泡 标准 不兼容ie678
7:e.cancelBubble 该属性阻止冒泡,非标准 兼容ie 678
<div class="father">
<div class="son"></div>
</div>
var son=document.querySelector('.son');
var fat=document.querySelector('.father');
son.addEventListener('click',function(e){
alert('son');
if(e && e.stopPropagation){
e.stopPropagation(); //阻止冒泡,即fat不弹出(不兼容ie 678)
}else{
window.event.cancelBubble=true; //取消冒泡(兼容)
}
});
fat.addEventListener('click',function(e){
alert('father');
}); //由于冒泡,点击son,fat也会在之后弹出