日期:2014-05-16  浏览次数:20300 次

如何运用事件委托优化web页面性能
看资料说事件委托可以减少事件监听数,提高性能。
如果这样的话是否可以将所有的点击事件都写在body里,比如
JScript code

document.body.addEventListener('click',function(e){
    switch(e.target.id){
       case 'id1':
       //dosomething1
       break;
       case 'id2':
       //dosomething2
       break;
    }
},false)


这样是否可以达到效率最优化?

------解决方案--------------------
如果这样写, 你必须区分每一个需要绑定事件的元素, 代码意图肯定没有直接绑定来的明显, 而且不灵活
有没有性能上的优势还有待实际证明, 但一般代码如果没有性能上的副作用出现, 就算多消耗一点性能也没有关系。网页特效的编写, 性能不是首先需要考虑的东西
------解决方案--------------------
探讨
1,同一个页面上id本身就不允许重复的。虽然没有真正用到实践中,但是我认为这样似乎更容易把事件集中管理。
2,每添加一个或者删除一个带事件的标签肯定要修改这个函数,平常我们用click绑定的时候不是也是这样做的吗?现在写事件的方式都不建议直接在页面上用onclick事件直接写了。代码和页面需要做到分离。
3,更方便记录统计用户的行为。

引用:

你这样能实现的话看着似……

------解决方案--------------------
其实没什么太大问题。只是各种判断id 很麻烦. 我的话会选择直接绑定到目标元素中去。