常见事件对象的属性:返回触发对象及类型 阻止冒泡 阻止连接跳转 事件委托

事件对象的一些属性
1 返回触发事件的对象——e.target
e.target和this的区别
检测方法

<style>
        ul {
            background-color: chartreuse;
            width: 10px;
            height: 50px;
        }
        
        li {
            background-color: cornflowerblue;
            width: 120px;
            height: 60px;
        }
    </style>
</head>

<body>
    <div>
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        var ul = document.querySelector('ul');
        var lis = document.querySelectorAll('li');
        lis[0].addEventListener('click', function(e) {
            // console.log(e.target);
            console.log(this)
        });
        ul.addEventListener('click', function(e) {
            console.log(e.target);
            // console.log(this)
        });
        // ul.onclick = function(e) {
        //     console.log(e.target);
        //     console.log(this)
        // };
    </script>
    //e.target得到的是触发click的事件的对象 //this获得的是绑定click的事件对象

在操作中可以看出要直接获取点击对象就使用e.target
要获取绑定事件的对象就使用this。
2 返回触发事件类型——e.type

<script>
var div=documen.queryselector('div');
div.addEventListener('mouseover',fn);
div.addEventListener('click',fn);
div.addEventListener('mouseout',fn);
function fn(e){
console.log(e.tupe)
}
//返回触发事件的类型
</script>

3 阻止默认行为事件比如让链接不跳转,或是让提交按钮不提交

<script>
//对于监听方式注册的事件只有一种阻止方式
var a =document.queryselector('a');
a.addEventListener('click',fn);
function fn(e){
e.preventDefault;}
//适用于普通浏览器 
//传统注册事件方式,有三种方法阻止方式
a.onclick=function(e){
e.preventDefault;
//适用于普通浏览器 
e.returnValue;
//适用于ie678浏览器
return false;
//也可以利用return false让连接不跳转,没有兼容性问题,但不能继续执行return后面的代码
}
</script>

4 阻止事件冒泡

<body>
	<div class='father'>
		<div class='son'></div>
	</div>
<script>
	var son.document.queryselector('.son');
	son.addEventListener('click',function(e){
	alert('son');
	e.stopPropagation();//stop停止 propagation传播
	e.cancelBubble=true;//cancel 取消 bubble冒泡
	},false);
	var father=document.queryselector('.father');
	father.addEventListener('click',function(e){
	alert('father');
	},false);
	document.addEventListener('click',function(e){
	alert('document');
	})
</script>
</body>

5 事件委托——利用冒泡减少dom访问次数

<body>
	<ul>
		<li>单机此处,弹框冒出</li>
		<li>单机此处,弹框冒出</li>
		<li>单机此处,弹框冒出</li>
		<li>单机此处,弹框冒出</li>
	</ul>
<script>
//为父级增加监听,利用冒泡影响子元素
var ul=document.querySelector('ul');
ul.addEventListener('click',function(e){
//e.target获得点击的对象
e.target.style.backgroundColor='pink';
},false)
</script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值