事件委托的定义:
利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
使用事件委托时,只需在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(鼠标点击事件和键盘输入事件)