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 相关文章推荐
javascript 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
javascript 正则表达式相关应介绍
Nov 27 Javascript
js调用后台servlet方法实例
Jun 09 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 Javascript
JS触摸事件、手势事件详解
May 04 Javascript
JS实现简单抖动效果
Jun 01 Javascript
vue中将网页打印成pdf实例代码
Jun 15 Javascript
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
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学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
js密码强度检测
2016/01/07 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
python绘制条形图方法代码详解
2017/12/19 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
公司前台接待岗位职责
2013/12/03 职场文书
计算机毕业生求职信
2014/06/10 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
先进党支部申报材料
2014/12/24 职场文书
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers
python pygame 开发五子棋双人对弈
2022/05/02 Python