仿jQuery中undelegate()方法功能的函数
//跨浏览器事件绑定
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()方法功能的函数的更多相关文章
- jQuery中on()方法用法实例详解
这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能及各种常见的使用技巧,并对比分析了与bind(),live(),delegate()等方法的区别,需要的朋友可以参考下 本 ...
- jQuery中attr()方法用法实例
本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元 ...
- jquery中Live方法不可用,Jquery中Live方法失效
jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...
- jQuery中on()方法用法实例
这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能.定义及在匹配元素上绑定一个或者多个事件处理函数的使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中on()方法 ...
- 锋利的jQuery读书笔记---jQuery中Ajax--load方法
第一个Ajax例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...
- 关于Jquery中ajax方法data参数用法的总结
data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQ ...
- 解析jQuery中extend方法--源码解析以及递归的过程《二》
源码解析 在解析代码之前,首先要了解extend函数要解决什么问题,以及传入不同的参数,会达到怎样的效果.extend函数内部处理传入的不同参数,返回处理后的对象. extend函数用来扩展对象,增加 ...
- jQuery中animate()方法用法实例
本文实例讲述了jQuery中animate()方法用法.分享给大家供大家参考.具体分析如下: 此方法用于创建自定义动画,并且能够规定动画执行时长.擦除效果.动画完成后还可以地触发一个回调函数. ani ...
- jQuery中index()方法用法实例
本文实例讲述了jQuery中index()方法用法.分享给大家供大家参考.具体分析如下: 此方法可以搜索匹配元素,并返回元素的索引值.索引值是从0开始的. 语法结构一: 当此方法没有参数的时候,返回值 ...
随机推荐
- GC: CMS垃圾回收器一(英文版)
Memory Management in the Java HotSpot™ Virtual Machine Concurrent Mark-Sweep (CMS) Collector For man ...
- 结构类模式(一):适配器(Adapter)
定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 类适配器模式 使用继承的方式实现没有提供的接口从而达到适配到新系统的需求. ...
- openmp 并行求完数
// GetWanShu.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "omp.h" #inclu ...
- css3 前缀
- MVC中Model用法
Model:对于MVC来说,Model可不简单只是实体,它应该叫视图模型,这是我自己的理解,即视图中的数据由Model来提供,当视图的数据需要改变时,我们不用打开aspx或ascx文件,只需要修改相应 ...
- ASP.NET MVC 修改视图的默认路径(MVC2,MVC3)
ASP.NET MVC2 修改视图的默认路径 步骤:1.编写继承自WebFormViewEngine的类,重写视图路径 2.在Application_Start()中添加语句: ViewEngines ...
- strlen() 和 sizeof() 在字符串中的使用
#include <string.h> int _tmain(int argc, _TCHAR* argv[]) { char *pMyChar = "I like coding ...
- jquery获取当前元素的坐标
jquery获取当前元素的坐标 1,获取对象 var obj = $("#id号"); 或 var obj = $(this); 实例中我获取的对象是弹出窗口按钮,这样创建的新窗 ...
- 【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
Fresco简单的使用—SimpleDraweeView 百学须先立志—学前须知: 在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...
- 解决IE6不支持position:fixed属性
最近在优化网站浮动广告时候遇见了IE6不支持position:fixed属性.上网收集了一下解决方案 比较好的方案就是利用css表达式进行解决 补充:CSS Expression (CSS 表达式), ...