//跨浏览器事件绑定
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. HDU 5444 Elven Postman (二叉树,暴力搜索)

    题意:给出一颗二叉树的先序遍历,默认的中序遍历是1..2.……n.给出q个询问,询问从根节点出发到某个点的路径. 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根 ...

  2. How Tomcat Works(十七)

    在前面的文章中,已经学会了如何通过实例化一个连接器和容器来获得一个servlet容器,并将连接器和容器相关联:但在前面的文章中只有一个连接器可用,该连接器服务8080端口上的HTTP请求,无法添加另一 ...

  3. Computational Geometry Template_Polygon

    #include <stdlib.h> #include <math.h> #include <iostream> #define MAXN 1000 #defin ...

  4. Ehcache(09)——缓存Web页面

    http://haohaoxuexi.iteye.com/blog/2121782 页面缓存 目录 1       SimplePageCachingFilter 1.1      calculate ...

  5. 关于document.referrer的使用需要注意

    项目使用到一个场景,ajax请求返回无权限,跳回登录页面,登录后自动返回之前的浏览页,跳转由前端处理,于是想到document.referrer,但是对可靠性不确定,特意搜索了一下相关资料,大致整理如 ...

  6. Sending messages to non-windowed applications -- AllocateHWnd, DeallocateHWnd

    http://delphi.about.com/od/windowsshellapi/l/aa093003a.htm Page 1: How Delphi dispatches messages in ...

  7. win7远程桌面连接

    远程桌面连接 1.在防火墙上设置同意同意远程桌面通过防火墙: 2.为管理员设置password.以便訪问者訪问: 3.我的电脑-右键属性-远程设置-远程-选上"同意远程协助远程这台计算机.同 ...

  8. JavaScript Modules

    One of the first challenges developers new to JavaScript who are building large applications will ha ...

  9. 【JavaScript】Registering JavaScript object methods as callbacks

    The registration of callback functions is very common in JavaScript web programming, for example to ...

  10. 分享8款绚丽的HTML5/jQuery特效插件

    有几天没有分享前端资源了,今天要向大家分享15款非常给力的HTML5/jQuery特效插件,废话少说,一起来看看. 1.CSS3图片重力感应特效 很酷的一款CSS3模拟重力感应特效,你可以拖动图片来甩 ...