js学习总结之DOM2兼容处理重复问题的解决方法


Posted in Javascript onJuly 27, 2017

DOM2兼容处理重复问题的解决方法,具体如下

在解决this问题之后,只需要在每次往自定义属性和事件池当中添加事件的时候进行一下判断就好了,具体代码如下

/*
  bind:处理DOM2级事件绑定的兼容性问题(绑定方法)
  @parameter:
    curEle->要绑定事件的元素
    evenType->要绑定的事件类型("click","mouseover")
    evenFn->要绑定的方法
*/
function bind(curEle,evenType,evenFn){
  if('addEventListener' in document){
    curEle.addEventListener(evenType,evenFn,false);
    return;
  }
  //给evenFn化妆 并且把化妆前的照片贴在自己对应的脑门上
  var tempFn = function(){
    evenFn.call(curEle)
  }
  tempFn.photo = evenFn;
  //首先判断自定义属性之前是否存在,不存在的话创建一个,由于要存储多个化妆后的结果,所以我们让其值是一个数组
  if(!curEle["mybind"+evenType]){//根据不同的事件类型是不同的数组
    curEle["mybind"+evenType] = [];
  }
  //解决重复问题:每一次自己在往自定义属性对应的容器中添加前,看一下是否已经存在,存在的话就不用重新的添加了,同理也不需要往事件池里面存储了
  var ary = curEle["mybind"+evenType];
  for(var i = 0;i<ary.length;i++){
    var cur = ary[i];
    if(cur.photo === evenFn){
      return;
    }
  }
  ary.push(tempFn);
  curEle.attachEvent("on"+evenType,tempFn);
  //这里的开始想法是改变this的指向,把this不指向window
  /*
    box.attachEvent("onclick",function(){
      fn1.call(box)
    })
    这样虽然解决了this的问题,但是又抛出了一个新的问题,不知道该如何删除了(我们不知道匿名函数是谁)
    var tempFn = function(){
      fn1.call(box)
    }
    box.attachEvent("onclick",tempFn);
    box.detachEvent("onclick",tempFn);
  */
}

function unbind(curEle,evenType,evenFn){
  if('removeEventListener' in document){
    curEle.removeEventListener(evenType,evenFn,false);
    return;
  }
  //拿evenFn到curEle["myBind"]这里找化妆后的结果,找到之后再事件池中把化妆后的结果移除事件池
  var ary = curEle['myBind'+evenType];
  for(var i = 0;i<ary.length;i++){
    if(ary[i].photo===evenFn){
      ary.splice(i,1)//找到后 把自己存储的容器中对应的移除掉
      curEle.detachEvent("on"+evenType,ary[i]);//在把事件池中对应的也移除掉
      break;
    }
  }
  
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用一段js程序来实现动画功能
Mar 06 Javascript
javascript 写类方式之二
Jul 05 Javascript
js实现发送验证码后的倒计时功能
May 28 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
日常收藏的jquery技巧
Dec 02 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
js判断在哪个浏览器打开项目的方法
Jan 21 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 #Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 #Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 #Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 #Javascript
angular2+node.js express打包部署的实战
Jul 27 #Javascript
利用Ionic2 + angular4实现一个地区选择组件
Jul 27 #Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 #jQuery
You might like
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
js实现电灯开关效果
2021/01/19 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python算法之栈(stack)的实现
2014/08/18 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
简单了解python的break、continue、pass
2019/07/08 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
竞聘书格式及范文
2014/03/31 职场文书
语文教师求职信范文
2015/03/20 职场文书
入党申请书怎么写?
2019/06/11 职场文书