//跨浏览器事件绑定
function addEvent(obj,type,fn){
if(typeof obj.removeEventListener !='undefined'){ /////////////////////////w3c
//创建一个数组,保存事件
if(!obj.events) obj.events=[];
//创建数组,保存方法
if(!obj.events[type]) obj.events[type]=[];
//判断数组里是否有数据,有数据检查一下是否有相同的方法
if(obj.events[type].length>0){
if(addEvent.equal(obj.events[type],fn)) {
return false;
} else {
obj.events[type].push(fn);
}
} else {
obj.events[type].push(fn);
}
obj.addEventListener(type, fn, false);
} else { /////////////////////////////////////IE
//创建一个数组,保存事件
if(!obj.events) obj.events=[];
//创建数组,保存方法
if(!obj.events[type]) obj.events[type]=[];
//判断数组里是否有数据,有数据检查一下是否有相同的方法
if(obj.events[type].length>0){
if(addEvent.equal(obj.events[type],fn)) {
return false;
} else {
obj.events[type].push(fn);
}
} else {
obj.events[type].push(fn);
}
//执行事件处理函数
var _this=this;
obj['on'+type]=addEvent.exec;
} } //执行事件处理函数
addEvent.exec=function(event){
var e =event || window.event;
var es = this.events[e.type];
for(var i in es){
es[i].call(this);
}
} //同一个注册函数进行屏蔽
addEvent.equal=function(es,fn){
for(var i in es){
if(es[i]==fn){
return true;
}
} return false;
} //删除事件
function removeEvent(obj,type){ if(typeof obj.removeEventListener !='undefined'){ ///////////////////////////////////////w3c
if(type){ //删除指定事件
//判断删除的事件是否绑定
if(!obj.events[type]) return false;
for(var j=0;j<obj.events[type].length;j++){
obj.removeEventListener(type,obj.events[type][j], false);
}
} else { //清除元素所有事件
for(var eveName in obj.events){
for(var k=0;k<obj.events[eveName].length;k++){
obj.removeEventListener(eveName,obj.events[eveName][k], false);
}
}
}
} else { /////////////////////////////////////IE
if(type){ //删除指定事件
//判断删除的事件是否绑定
if(!obj.events[type]) return false;
for(var j=0;j<obj.events[type].length;j++){
delete obj.events[type][j];
}
} else { //清除元素所有事件
for(var eveName in obj.events){
for(var k=0;k<obj.events[eveName].length;k++){
delete obj.events[eveName][k];
}
}
}
} }
addEvent(btn,'click',function(){
alert('事件绑定');
});
//删除click事件
removeEvent(btn,'click');
//删除mouseover事件
removeEvent(btn,'mouseover');
//删除所有事件
removeEvent(btn);

没优化函数,函数中有许多重复代码,因为感觉我写函数的思考不是很好,但是又没别的好想法,没有优化了。
如果哪位大鸟有好的思路或想法,请留言,

仿jQuery中undelegate()方法功能的函数的更多相关文章

  1. jQuery中on()方法用法实例详解

    这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能及各种常见的使用技巧,并对比分析了与bind(),live(),delegate()等方法的区别,需要的朋友可以参考下 本 ...

  2. jQuery中attr()方法用法实例

    本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元 ...

  3. jquery中Live方法不可用,Jquery中Live方法失效

    jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...

  4. jQuery中on()方法用法实例

    这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能.定义及在匹配元素上绑定一个或者多个事件处理函数的使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中on()方法 ...

  5. 锋利的jQuery读书笔记---jQuery中Ajax--load方法

    第一个Ajax例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  6. 关于Jquery中ajax方法data参数用法的总结

    data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQ ...

  7. 解析jQuery中extend方法--源码解析以及递归的过程《二》

    源码解析 在解析代码之前,首先要了解extend函数要解决什么问题,以及传入不同的参数,会达到怎样的效果.extend函数内部处理传入的不同参数,返回处理后的对象. extend函数用来扩展对象,增加 ...

  8. jQuery中animate()方法用法实例

    本文实例讲述了jQuery中animate()方法用法.分享给大家供大家参考.具体分析如下: 此方法用于创建自定义动画,并且能够规定动画执行时长.擦除效果.动画完成后还可以地触发一个回调函数. ani ...

  9. jQuery中index()方法用法实例

    本文实例讲述了jQuery中index()方法用法.分享给大家供大家参考.具体分析如下: 此方法可以搜索匹配元素,并返回元素的索引值.索引值是从0开始的. 语法结构一: 当此方法没有参数的时候,返回值 ...

随机推荐

  1. OC:Block语法、Block使用、Block实现数组排序

    Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return  a > b ...

  2. AspNet上传文件的几个控件

    本文转载:http://www.cnblogs.com/downmoon/archive/2009/02/05/1384931.html 1.AspnetUpload 地址:http://www.as ...

  3. 【转】REST on Rails指南

    REST on Rails指南1:理解资源 这是来自http://www.softiesonrails.com的REST简明指南. PART I 在理解REST on Rails之前,有必要先思考一下 ...

  4. workflow 工作流

    https://documentation.devexpress.com/#Xaf/CustomDocument3356

  5. Javascript 异步加载详解

    Javascript 异步加载详解 本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy ...

  6. [Express] Level 2: Middleware -- 2

    Logging Middleware Help finish the following middleware code in the logger.js file: On the response  ...

  7. android之多媒体篇(一)

    Android 4.0.3(Api Level 15)支持的多媒体格式. 注意:有些设备可能支持其他的文件格式. 1.Audio AAC LC/LTP.HE-AACv1(AAC+).AMR-NB.AM ...

  8. iOS开发——网络编程OC篇&使用WebView构建HyBird应用

    使用WebView构建HyBird应用 HyBird是一种本地技术与Web相结合,能过实现跨平台的移动应用开发,最常用的一个框架:PhoneGap 一:首先,写好html代码 <!DOCTYPE ...

  9. javascript exec方法

    题目 取出 "[大哭][尴尬][发怒][发怒][调皮][调皮][呲牙]" 串中[]里面的东西 思路 正则匹配,/\[(.+?)\]/ig; exec方法循环 exec() 方法的功 ...

  10. Flex-Security权限控制框架

    转自:http://code.google.com/p/flex-security/ flex UI组件权限控制框架 一.快速开始 1) 下载并添加flex_security.swf在你的flex l ...