事件委托及移除事件处理程序

        在JavaScript中,添加到页面的事件处理程序数量直接关系到页面的整体运行性能,主要原因为:首先,每个函数都是对象,都会占用内存,内存中的对象越多,性能就越差。其次必须事先指定所有时间处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间。

1.事件委托

        对“事件处理程序过多”的解决方案就是事件委托。事件委托利用了事件的冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。优点如下:
        ·  document对象很快就可访问,可以在页面生命周期的任何时间点上为他添加事件处理程序(无需dengdai DOMContentLoaded或load事件)。
        ·  在页面设置事件处理程序所花的事件更少,只添加一个事件处理程序所需的DOM引用更少,所花的事件也更少。
        ·  整个页面站用的内存空间更少,能够提升整体性能。


  • name
  • age
  • address
//js代码 var person = document.getElementById("someone"); person.addEventListenter("click",function(event){ switch(event.target.id){ case "name": document.title = '''title changed'; break; case "age": location.href = "http://www.yxl.com"; break; case "address": alert("address"); break; } };

2.移除事件处理程序

        在不需要的时候移除事件处理程序,也是解决上述问题的一个方案。内存中那些过时不用的“空事件处理程序”(dangling event handler)也是造成Web用用程序内存性能问题的主要原因。导致空事件处理程序两种情况:

第一种:从文档中移除带有事件处理程序的元素时。

你可能感兴趣的:(事件委托及移除事件处理程序)