事件委托(事件代理)

事件委托原理:事件冒泡机制

优点

1.大量减少内存占用,减少事件注册。

2.新增元素实现动态绑定事件

实现方式:

一、可用addEventListener();    //所有主流浏览器,除了IE8及更早IE版本。

1.语法element.addEventListener(eventfunctionuseCapture);

event:必须。字符串,指定事件名。 不加'on',如click

function:必须。指定要事件触发时执行的函数。

useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行(true-事件句柄在捕获阶段执行;false-默认。事件句柄在冒泡阶段执行)。

2.移除事件监听:element.removeEventListener(eventfunction,useCapture)。移除时传入的参数与添加处理程序时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数无法移除。

3.功能:可多次绑定同一个事件,并且不会覆盖上一个事件。

代码实例:给所有的li绑定点击事件,极为繁琐,这时候需要用到事件代理。

ul.addEventListener("click",function(e) { 

    if(e.target && e.target.nodeName.toLowerCase() == "li") {  // 检查事件源e.target是否为Li 

        console.log("List item ",e.target.id.replace("post-","")," was clicked!");  // 打印当前点击是第几个item 

  } 

});

二、attachEvent()     //IE8及IE更早版本

1.用法:element.attachEvent(event,function);

(1)event事件加'on',onClick

(2)没有第三个参数,因为IE只有冒泡,没有反向冒泡。

(3)执行顺序按照绑定的反序(先执行后绑定的方法)。

2.移除事件监听:element.detachEvent(event,function)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容