仿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开始的. 语法结构一: 当此方法没有参数的时候,返回值 ...
随机推荐
- branch
1.删除分支 git branch -d branch_name error: The branch 'branch_name' is not fully merged. If you are sur ...
- redis的文件事件处理器
前言 C10K problem提出了一个问题,如果1w个客户端连接到server上,间歇性的发送消息,有哪些好的方案? 其中的一种方案是,每个线程处理多个客户端,使用异步I/O和就绪通 ...
- 转载:mysql update更新带子查询的实现方式
出自:http://576017120.iteye.com/blog/1947154 mysql中更新时不能直接将更新的表作为查询的表,可以通过临时中间表的形式. 总结一下: 一:单表更新时 例如: ...
- 转载:Erlang 资源
Erlang资源 erlang豆瓣广播
- ORA-04091: 表 发生了变化, 触发器/函数不能读它
触发器中新调用了一个存储过程. 触发器: create or replace trigger tr_credits_wzclorder_clwzjk after update on app_wzclo ...
- word2013中取消句首字母自动大写
经常使用word的朋友都知道word中一行的首字母会自动大写,这给用户带来方便的同时,也产生了问题,因为有时候我们并不希望每行开头的首字母大写.要取消首字母自动大写可以取消勾选"首句字母大写 ...
- Qt之图标切分与合并
有些时候会将多张有相同功能的图片绘制成一张,不管是使用或者绘制上都会方便很多.对美工与开发者来说也都是一件省事.省力.更省心的方式.二全其美,又何乐而不为呢... 例如:QQ等级 0-9可以组 ...
- Mysql的存储过程(以Mysql为例进行讲解)
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...
- sql注入在线检測(sqlmapapi)
之前一搞渗透的同事问我.sqlmapapi.py是干啥的,我猜非常多人都玩过sqlmap,但玩过sqlmapapi的应该比較少,今天就和大家一起看看怎样使用以及一些美的地方. 说白了.sqlmapap ...
- //判断是否安装Flash插件
//判断是否安装Flash插件 var swf; function IE_Flash() { try { var swf ...