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 相关文章推荐
jquery 简单应用示例总结
Aug 09 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
利用jquery实现实时更新歌词的方法
Jan 06 Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 Javascript
react redux入门示例
Apr 19 Javascript
vue中监听返回键问题
Aug 28 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 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默认安装产生系统漏洞
2006/10/09 PHP
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python内建数据结构详解
2016/02/03 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
python实现烟花小程序
2019/01/30 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python 循环数据赋值实例
2019/12/02 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
班主任工作经验材料
2014/02/02 职场文书
企业后勤岗位职责
2014/02/28 职场文书
学历公证书范本
2014/04/09 职场文书
党支部三会一课计划
2014/09/24 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
党建工作汇报材料
2014/12/24 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python