首页 > 代码库 > JavaScript的事件委托技术
JavaScript的事件委托技术
如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定事件处理程序.这样就会影响性能了。DOM访问次数增多,就会导致延迟加载页面.事实上,从如何来利用好事件处理程序,还是有很好的解决方案的.
一、事件委托
对事件处理程序过多的问题解决的方案就是事件委托技术.
事件委托技术利用了事件冒泡.只需指定一个事件处理程序.
我们可以为某个需要触发事件的父元素来绑定事件处理程序.
HTML代码:
<ul id = "ul1">
<li id = "li1"></li>
<li id = "li2"></li>
<li id = "li3"></li>
</ul>
现在我们要为这3个li绑定事件处理程序..
只需要在ul绑定事件处理程序即可,在js中每一个函数都是一个对象,如果有n个处理函数的话就会创建n个对象,对象就会占用很多内存,内存中的对象越多性能就越差。我们可以采用事件委托技术只给其父元素加一个处理函数,然后利用事件委托给其子元素,相当于只创建了一个对象,如果在一个复杂的web应用程序中,这种事件委托是非常实用的,对提高性能有很大的帮助。
js代码:
var oUl = document.getElementById("ul1");
aLi = [].slice.call(oUl.getElementsByTagName("li"));
oUl.onclick = function(e)
{
e = e || event;
var target = e.target || e.srcElement;
var index = aLi.indexOf(target);
switch (index)
{
case 0:
alert("li1");
break;
case 1:
alert("li2");
break;
case 2:
alert("li3");
break;
}
}
JavaScript的事件委托技术