js利用事件委托减少dom引用提高性能

2017-12-28 23:22:13 4,590 views

事件委托的定义:

利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
使用事件委托时,只需在DOM树中尽量最高的层次上添加一个事件处理程序

案例

例如为ul下的每个li都指定事件处理程序 ,其实可以利用事件委托在ul上面绑定事件处理程序

html代码

<ul id="list">
<li id="item1">item</li>
<li id="item2">item</li>
<li id="item3">item</li>
</ul>

 

js代码  常规思路

var list = document.getElementById("list");
for(var i = 0, len = list.children.length; i < len; i++) {
list.children[i].onclick = function(event) {
event = event || window.event;
var _this = event.target || event.srcElement;
console.log(_this.id);
}
}

 

事件委托 js代码

var list = document.getElementById("list");
list.onclick = function(event) {
event = event || window.event;
var _this = event.target || event.srcElement;
console.log(_this.id);
}

 

事件委托的优点:

1.在页面中设置事件处理程序所需的时间更少.只添加一个事件处理程序所需的DOM引用更少,所花的事件更少   。。。上面可以看出只为ul添加了一个事件处理程序
2.整个页面占用的内存空间更少,提升整体性能

 

最适合采用事件委托技术的事件

包括click,mousedown,mouseup,keydown,keyup,keypress(鼠标点击事件和键盘输入事件)

0

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。