全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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;
    }
  }
  
}

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


# js  # DOM2  # 兼容  # JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后th  # js学习总结之DOM2兼容处理顺序问题的解决方法  # javascript 兼容所有浏览器的DOM扩展功能  # Dom操作之兼容技巧分享  # Dom与浏览器兼容性说明  # DOM Scripting中的图片切换[兼容Firefox]  # 前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)  # javascript firefox兼容ie的dom方法脚本  # javascript下有关dom以及xml节点访问兼容问题  # js学习总结之DOM2兼容处理this问题的解决方法  # 绑定  # 自定义  # 移除  # 池中  # 是一个  # 也不  # 多个  # 只需  # 要在  # 不存在  # 看一下  # 解决方法  # 创建一个  # 抛出  # 知道该  # 让其  # 大家多多  # 是否存在  # 解决了  # 就好了 


相关文章: 如何通过VPS建站实现广告与增值服务盈利?  高端云建站费用究竟需要多少预算?  广州商城建站系统开发成本与周期如何控制?  ,怎么用自己头像做动态表情包?  如何在云主机快速搭建网站站点?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何通过VPS搭建网站快速盈利?  建站主机是什么?如何选择适合的建站主机?  创业网站制作流程,创业网站可靠吗?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站按钮制作软件,如何实现网页中按钮的自动点击?  深入理解Android中的xmlns:tools属性  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  在线制作视频网站免费,都有哪些好的动漫网站?  如何在企业微信快速生成手机电脑官网?  香港服务器租用费用高吗?如何避免常见误区?  如何通过虚拟机搭建网站?详细步骤解析  如何在阿里云ECS服务器部署织梦CMS网站?  简单实现Android验证码  建站之星安装步骤有哪些常见问题?  红河网站制作公司,红河事业单位身份证如何上传?  如何用景安虚拟主机手机版绑定域名建站?  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  建站主机默认首页配置指南:核心功能与访问路径优化  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  建站之星与建站宝盒如何选择最佳方案?  如何快速重置建站主机并恢复默认配置?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  实现虚拟支付需哪些建站技术支撑?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何在IIS管理器中快速创建并配置网站?  如何快速使用云服务器搭建个人网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何获取开源自助建站系统免费下载链接?  学校为何禁止电信移动建设网站?  北京网站制作公司哪家好一点,北京租房网站有哪些?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  常州企业网站制作公司,全国继续教育网怎么登录?  如何通过可视化优化提升建站效果? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。