全网整合营销服务商

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

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

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

针对上一篇提到的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] = [];
 }
 curEle["mybind"+evenType].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){
   curEle.detachEvent("on"+evenType,ary[i]);
   break;
  }
 }
 
}

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


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


相关文章: 网站制作员失业,怎样查看自己网站的注册者?  如何正确选择百度移动适配建站域名?  制作销售网站教学视频,销售网站有哪些?  如何快速搭建支持数据库操作的智能建站平台?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  如何配置IIS站点权限与局域网访问?  IOS倒计时设置UIButton标题title的抖动问题  ,石家庄四十八中学官网?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何规划企业建站流程的关键步骤?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何安全更换建站之星模板并保留数据?  如何在腾讯云免费申请建站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  开心动漫网站制作软件下载,十分开心动画为何停播?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何设置并定期更换建站之星安全管理员密码?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  学校免费自助建站系统:智能生成+拖拽设计+多端适配  沈阳制作网站公司排名,沈阳装饰协会官方网站?  常州企业网站制作公司,全国继续教育网怎么登录?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  5种Android数据存储方式汇总  建站主机功能解析:服务器选择与快速搭建指南  免费视频制作网站,更新又快又好的免费电影网站?  制作网站的公司有哪些,做一个公司网站要多少钱?  如何在VPS电脑上快速搭建网站?  如何在局域网内绑定自建网站域名?  如何高效利用200m空间完成建站?  宁波自助建站系统如何快速打造专业企业网站?  定制建站如何定义?其核心优势是什么?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  香港服务器部署网站为何提示未备案?  javascript基本数据类型及类型检测常用方法小结  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  ,柠檬视频怎样兑换vip?  制作网站的基本流程,设计网站的软件是什么?  招商网站制作流程,网站招商广告语?  如何快速搭建个人网站并优化SEO?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  定制建站流程步骤详解:一站式方案设计与开发指南  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何快速生成橙子建站落地页链接?  北京的网站制作公司有哪些,哪个视频网站最好?  如何在IIS中新建站点并解决端口绑定冲突?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南 

您的项目需求

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