Javascript, ES6, Golang, js, design, works, uuorks

2010年2月2日

灵活使用js事件代码,减少页面内存消耗

js事件代理简单得来说,就是通过js事件的event.target对象来判断你要操作的对象,这样你就不必在每一个元素都绑定事件处理程序,有效地减少了内存的消耗,循环的操作,好处多多。

比如一个弹出菜单,原来的做法是每一个按钮都注册一个onmouseover事件,现在你可以把事件注册到按钮的上层节点上来监听,通过判断发生事件的节点来进行一些列操作。 代码可能如下:

$('new-menu').addEvent('mouseover',function(){ //绑定到new-menu这个节点上

    if(event.target.tagName == 'STRONG'){  //判断是不是你要的那个对象
var tab = $(event.target);    
var menuc = $(event.target).getNext();
event.stop();
    }
}); //代码基于mootools框架


如果一个页面有10多个弹出菜单,5个tab切换,每个切换有3个tab页,使用事件代理就得到的好处就是减少了76%的事件处理函数,页面对于内存的占用应该会有所提升,所以我还是喜欢使用事件代理。

当然事件代理也不是万能的,比如一些接口事件是不支持这个方法的,这里有一篇文章,可以参考下:http://cssrainbow.cn/index.php/code-snippets/javascript-code-snippets/1058.html

没有评论:

发表评论