大叔手记(4):jQuery自定义绑定的魔法升级版
2011-12-13 20:28
239 查看
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绑定自定义事件的魔法升级版
- jQuery自己定义绑定的魔法升级版
- jQuery实现获取绑定自定义事件元素的方法
- 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
- JQuery的自定义事件代码,触发,绑定简单实例
- 大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题
- jquery的自定义事件通过on绑定trigger触发
- jquery 自定义事件绑定与触发 $.one与$.bind效果对比实例
- jQuery获取绑定自定义事件的元素
- jquery 自定义事件绑定与触发 $.one与$.bind效果对比实例
- JQuery的自定义事件代码,触发,绑定简单实例
- sharepoint 2010 调查 / 选项 / 将(指定自定义值)修改为(其他)/ jquery 修改input 值与绑定(for) label,修改label的值
- jQuery实现获取绑定自定义事件元素的方法
- jQuery事件的绑定、触发、及监听方法简单说明
- jquery使用attr访问自定义属性,减少javascript脚本中代码和数据的耦合
- KSOAP解析webService绑定到自定义适配器listView中显示
- SpringMVC自定义日期类型的数据绑定
- 深入了解javascript事件 -自定义事件绑定
- Repeater控件的自定义数据绑定
- jquery validate addMethod 自定义验证方法