浅谈jquery事件处理
在以jQuery为基础库的前端开发体系中,经常会在一个页面上通过各种标识绑定许许多多的事件。就算简单的使用了事件代理,也还是造成了事件的分散,不好维护和管理。
那么,如何解决这个问题呢?而我,想到了backbone中的events。如下:
events:{ "click.icon": "open", "click.button.edit": "openEditDialog", "click.button.delete":"destroy" }
也就是,把事件聚集到一起,类似事件处理中心这么一个概念。
简单的理了一下实现思路:
使用事件代理的方式,将事件绑定到body节点。(某些事件自身是不冒泡的,在此暂时不做研究)
对于事件的执行对象,给一个统一标识。
事件的执行函数,集中处理。
<body> <divdata-click-center="handler1"></div> <divdata-click-center="handler2"></div> </body> //事件处理中心 varClickEventCenter={ "handler1":function(){ //dosomething... }, "handler2":function(){ //dosomething... } //... } //事件绑定 $body.on("click","[data-click-center]",function(){ varhandlerName=$(this).data("click-center"); varhandler=ClickEventCenter[handlerName]
if($.isFunction(handler))handler() })