jQuery绑定自定义事件的魔法升级版


Posted in Javascript onJune 30, 2016

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 1.10.3 在线手册》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
javascript加号"+"的二义性说明
Mar 04 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
jquery禁用右键示例
Apr 28 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
深入理解js generator数据类型
Aug 16 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
详解javascript常用工具类的封装
Jan 30 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 Javascript
JS简单表单验证功能完整示例
Jan 26 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 #Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 #Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 #Javascript
浅谈JS中json数据的处理
Jun 30 #Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 #Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 #Javascript
简单实现js间歇或无缝滚动效果
Jun 29 #Javascript
You might like
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python使用cookielib库示例分享
2014/03/03 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
全面理解Python中self的用法
2016/06/04 Python
python tkinter界面居中显示的方法
2018/10/11 Python
python中id函数运行方式
2020/07/03 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
财务会计大学生自我评价
2014/04/09 职场文书
大型营销活动计划书
2014/04/28 职场文书
雷人标语集锦
2014/06/19 职场文书
办理收楼委托书范本
2014/10/09 职场文书
环卫个人总结
2015/03/03 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
个人向公司借款协议书
2016/03/19 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
Python基础之pandas数据合并
2021/04/27 Python