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自己定义绑定的魔法升级版的更多相关文章

  1. 解密jQuery事件核心 - 绑定设计(一)

    说起jQuery的事件,不得不提一下Dean Edwards大神 addEvent库,很多流行的类库的基本思想从他那儿借来的 jQuery的事件处理机制吸取了JavaScript专家Dean Edwa ...

  2. jQuery上定义插件并重设插件构造函数

    插件alert的全部代码,每个插件都定义在如下类似的作用域中: +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ========= ...

  3. python 全栈开发,Day55(jQuery的位置信息,JS的事件流的概念(重点),事件对象,jQuery的事件绑定和解绑,事件委托(事件代理))

    一.jQuery的位置信息 jQuery的位置信息跟JS的client系列.offset系列.scroll系列封装好的一些简便api. 一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集 ...

  4. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  5. 关于Jquery的delegate绑定事件无效

    今天在做一个页面,用的是easyui页面有很多的tabs,里面都放了iframe 需要在load事件动态调整iframe高度 发现始终无法使用delegate来绑定load事件. 纠结了一下午发现了问 ...

  6. [HTML5]原生事件绑定和jquery动态事件绑定的区别

    原生事件绑定: <!-- 标签上绑定的事件是由window对象帮助调用,因此方法内的this其实是window对象 --> <label><input type=&quo ...

  7. jQuery源码分析之=>jQuery的定义

    最近写前段的代码比较多,jQuery是用的最多的一个对象,但是之前几次看了源码,都没搞清楚jQuery是怎么定义的,今天终于看明白怎么回事了.记录下来,算是一个新的开始吧. (文中源码都是jQuery ...

  8. jquery之on()绑定事件和off()解除绑定事件

    off()函数用于移除元素上绑定的一个或多个事件的事件处理函数. off()函数主要用于解除由on()函数绑定的事件处理函数. 该函数属于jQuery对象(实例). 语法 jQuery 1.7 新增该 ...

  9. jquery 动态事件绑定(0512)

    jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",fun ...

随机推荐

  1. input同名

    form表单传值,当,input的 name相同时候,可以同时传值. 当你提交时,你获取的同name数据会被后加载的那个input替代.容易造成数据混乱,但是,可以在某些特殊情况使用.比如,selec ...

  2. json 删除、添加对象

    1. 定义json对象    var entryJson = []; 2. 删除.添加对象 entryJson.pop();     //删除最后一个对象   entryJson.push({ //往 ...

  3. 关于golang的defer的练习

    golang的defer怎么说.大意就是在函数return后.函数关闭前.按照filo的顺序来执行的关键字 上代码: package main import ( "fmt" ) f ...

  4. ApiCloud开发经验总结

    1. 引擎或模块问题:遇到应用层无法解决的问题,如果能确定需要引擎和模块支持的,不要自己想办法绕过去,要第一时间在开发者社区提交问题,或找APICloud项目经理提出. !!!注意!!!: 在开发者社 ...

  5. 001_chrome工具详解

    一.chrome https://segmentfault.com/a/1190000000683599

  6. Java Scanner Readable

    通过implements(实现)Readbale interface(接口)的 read() method(方法) 实现自己添加字符到buffer里,然后读取 //策略模式package object ...

  7. java 多重继承

    接口不仅仅只是一种更纯粹形式的抽象类,它的目标比这更高,因为接口是根本没有任何具体实现的--也就是说,没有任何与接口相关的存储,因此也就无法阻止多个接口的组合, 在导出类中,不强制要求必须有一个抽象的 ...

  8. php生成随机数

    生成1-10之间的随机数,不重复. 方法一:用shuffle函数. <?php $arr=range(1,10); shuffle($arr); foreach($arr as $values) ...

  9. 【BZOJ】2289: 【POJ Challenge】圆,圆,圆

    题解 二分一个横坐标,过这个横坐标做一条和y轴平行的直线,相当于在这条直线上做区间覆盖,如果区间有交的话,那么答案是True 否则的话取两个不相交的区间,如果这两个圆相离或相切则不合法 否则看看相交的 ...

  10. 【LOJ】#2076. 「JSOI2016」炸弹攻击

    题解 我冷静一下,话说如果去掉建筑和R的限制好像是模拟退火吧 然后开始写模拟退火了,起始点就随机一个敌人作为起始点 没对着数据写了一下获得了70pts,感到美滋滋 然后对着数据卡了很久--发现有个数据 ...