javascript事件代理javascript

来源:互联网 发布:java卸载jar 编辑:程序博客网 时间:2024/05/24 06:34

在编程中,如果我们不想或不能够直接操纵目标对象,我们可以利用delegate创建一个代理对象来调用目标对象的方法,从而达到操纵目标对象的目的。毋庸置疑,代理对象要拥有目标对象的引用。我们来看一下javascript的一个最简单实现:

var delegate = function (client,clientmethod ){

return function() { return clientmethod.apply(client,arguments); }

}

var agentmethod = delegate(client, client.method )

agentmethod();

博客园

蓝色理想

无忧脚本

javaeye

csdn

运行代码

正由于这个特性,我们就可以利用ul的onclick去代理它下面所有元素的onclick事件。原来,我们需要给这些a元素准备五个侦听器(eventlistener),现在我们只需要1个,节省了4个,如果这个列表有一百行呢?就节省了99个!在商务应用,我们经过会遇到许多报表(grid,实质是用table做的),我们需要为每行添加悬浮变色效果与点击编辑功能,这就用到onmouseover 、 onmouseout 与 onclick事件,如果这个报表有五千行,我们也只需要三个侦听器,节省了14997个!如果用传统方法做这个grid,ie6这样垃圾的游览器不卡到你吐血。因此,善用event delegation会大大提高我们程序的性能。好了,文章到此为止,再见。

附上一些有用的链接:

event delegation with jquery

event delegation with prototype

event delegation with yui

http://blog.xole.net/article.php?id=632

http://htmlblog.net/bubble-menu-javascript-or-playing-with-yuis-event-delegation/


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!