您好,欢迎访问一九零五行业门户网

浅谈jQuery的自定义绑定

jquery自定义绑定首先让我们来看看jquery的自定义绑定的使用方法,你可以使用bind或者live来订阅一个事件(当然1.7以后也可以使用on了),代码如下:
$(#myelement).bind('customeventname',function(e){ ... }); $(.elementsclass).live('customeventname',function(e){ ... });
然后通过如下方式来触发事件:
$(#myelement).trigger('customeventname');
或者你也可以为自定义事件增加额外的参数,样例如下:
$(#myelement).bind('customeventname',function(e,data){ if(data.custom) ... }); $(#myelement).trigger('customeventname',{ custom: false });
魔法升级所谓魔法升级,其实是想让整个程序所有的自定义事件能够自动注册并绑定jquery上,然后执行的时候,所有注册该事件的模块都会执行。比如模块user.js里定义的userupdate方法和blogs.js里定义的blogupdate方法都定义了在发布一篇博客的时候需要执行的function函数,整个时候我们可以通过注册统一的事件名称(例如blogadded)bind到jquery指定的一个容器上(例如document)上,然后发布博客成功以后,执行$(document).trigger(“blodadded”)就ok了。
下面我们给个通用的样例代码:
var components = [user, blog, group, friend, topic, photo]; var eventtypes = [addcomplete, updatecomplete, deletecomplete, lockcomplete, unlockcomplete];       $.each(components, function(i,component) {         $.each(eventtypes, function(i,eventtype) { var handler = component[eventtype]; if (handler) $(document).bind(eventtype, handler);         });       })
然后每个js模块定义的代码安装如下格式:
user= {       addcomplete: function(e, data) { //...       },       updatecomplete: function(e, data) { //...       }     }
这样,不管在任何地方,如果我们需要的话,就可以使用jquery的方式来触发我们的事件了:
$(document).trigger(updatecomplete, data);
通过这种方法,大家可以发现一个模块的method只能注册一个事件,那如果我们通过一个方法来注册多个事件触发的话,可以使用如下方式:
var blogcontroller = {       blogaddorupdatecomplete: function() { //...       }     }     blogcontroller.blogaddcomplete = blogcontroller.blogupdatecomplete = blogcontroller.blogaddorupdatecomplete;
最后注意:本文只是展示一个简单的例子,不要混用不同module同一事件名称的用法哦,比如,user.js里的addcomplete和blog.js里的addcomplete可能根本就没有关系,也就是说只处理自己相应的逻辑,这时候,就不应该统一处理这个事件,但如果要检测的东西是一样的话,就可以使用,比如disableusercomplete,就可以通用,因为user模块需要处理禁用账户以后的操作,blog模块可能也需要处理禁用账户以后的操作。
结束语大叔手记:旨在记录日常工作中的各种小技巧与资料(包括但不限于技术),如对你有用,请推荐一把,给大叔写作的动力
以上就是浅谈jquery的自定义绑定的详细内容。
其它类似信息

推荐信息