事件源对象和事件委托机制

事件源对象是什么

我们打印出来看看

<div class="wrapper" style="width: 100px;height: 100px;background-color:red;">
   <div class="box" style="width: 50px;height: 50px; background-color:yellow;"></div>  </div>
 		var wrapper=document.getElementsByClassName('wrapper')[0];
            var box=document.getElementsByClassName('box')[0];
            //事件源对象
             wrapper.onclick=function(e){
                 var event=e||window.event//考虑到兼容性
                console.log(e)
            }

targrt就是我们要找的源对象,

那么找到了事件源对象有什么用呢
其中之一就是,事件委托机制会用到

当ul下面只有少数的Li的时候,我们可以通过for循环来获取我们点击的li对应的文本内容

 <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
        </ul>
		 var li =document.getElementsByTagName('li')
            var len=li.length;
            for (var i=0;i<len;i++){
                li[i].onclick=function(){
                    console.log(this.innerText);
                }
            }

很明显for循环浪费性能,如果1千万个li,那么电脑岂不是很崩溃,这个时候用事件委托机制,给ul绑定事件
优点 ,利用事件冒泡和事件源对象进行处理,性能不需要循环所有的元素一个个的绑定事件,2灵活,当有新的子元素时不需要重新绑定事件

(innerText 打印标签之间的纯文本信息,会将标签过滤掉,低版本的火狐浏览器不支持,而是支持textContent)

		var ul =document.getElementsByTagName('ul')[0]
            ul.onclick=function(){
                var event =e||window.event;
                var target =event.target||event.srcElement;
                console.log(target.innerText);
            }
 // 火狐,event.target  || ie  event.srcElement ||chrome 两者皆可用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值