js 动态给元素添加、移除事件的实现方法


Posted in Javascript onJuly 19, 2016

最近项目中要要到 js动态给给元素绑定事件,刚好之前没用到过这些,顺便学习一下,于是google了一下 事件,写了如下两个事件 一个添加事件 ,一个是移除事件

/addEventListener(),removeEventListener()用于处理指定和删除事件处理程序的操作
//作用域:事件处理程序会在其所属元素的作用域内运行
//addEventListener(event,function,capture/bubble);removeEventListener(event,function,capture/bubble)
//参数event如上表所示, function是要执行的函数, capture与bubble分别是W3C制定得两种时间模式,
//简单来说capture就是从document的开始读到最后一行, 再执行事件, 而bubble则是先寻找指定的位置再执行事件.
//capture/bubble的参数是布尔值, True表示用capture, False则是bubble
 

 function addEvent() {

      var obj = document.getElementById("txtIataCity");

      if (window.addEventListener) {

        //其它浏览器的事件代码: Mozilla, Netscape, Firefox

        //添加的事件的顺序即执行顺序 //注意用 addEventListener 添加带on的事件,不用加on

        obj.addEventListener('focus', function(){test('aa')} , false);

      }

      else {

        //IE 的事件代码 在原先事件上添加 add 方法

        obj.attachEvent('onfocus', function(){test('aa')});

      }

    }

 

    function removeEvnent() {

      var obj = document.getElementById("txtIataCity");

      if (window.removeEventListener) {

        obj.removeEventListener('focus', function(){test('aa')}, false);

      }

      else {

        obj.detachEvent('onfocus', function(){test('aa')});

      }

    }

页面加载的时候调用上述方法给input绑定事件,测试添加成功,可是移除始终不成功。于是网上找参考资料

//通过addEventListener()添加的事件只能通过removeEventListener()来移除. 是这样做的啊 下面还有一句://移除时addEventListener()添加的匿名函数将无法移除 问题找到了 function(){test('aa')}//无效,因为传入addEventListener()和removeEventListener()的方法不是同一个方法于是将test('aa') 提出来 写成function test(msg){ alert(msg)}改写成 function addEvent() {      var obj = document.getElementById("txtIataCity");

      if (window.addEventListener) {

        //其它浏览器的事件代码: Mozilla, Netscape, Firefox

        //添加的事件的顺序即执行顺序 //注意用 addEventListener 添加带on的事件,不用加on

        obj.addEventListener('focus', test('msg')} , false);

      }

      else {

        //IE 的事件代码 在原先事件上添加 add 方法

        obj.attachEvent('onfocus', test('msg')});

      }

    }

 

    function removeEvnent() {

      var obj = document.getElementById("txtIataCity");

      if (window.removeEventListener) {

        obj.removeEventListener('focus',test('msg')}, false);

      }

      else {

        obj.detachEvent('onfocus',test('msg'));

      }

    }

于是乎执行 ie提示: 类型不匹配  看样子是不支持带参数的函数 于是再次将函数封装成无参形式传入

执行,添加成功,移除还是失败。在网上找了半天 差不多都是这样写的 都成功了,不知道为什么我的就移除不了。

后来看页面中本来就引用了jquery 于是采用jquery的bind 和unbind 事件 一次成功。

唉,等项目完了 把这个问题解决掉。

以上这篇js 动态给元素添加、移除事件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让innerHTML的脚本也可以运行起来
Jul 01 Javascript
JavaScript触发器详解
Mar 10 Javascript
JavaScript 闭包深入理解(closure)
May 27 Javascript
jquery中的查找parents与closest方法之间的区别
Dec 02 Javascript
javascript html5移动端轻松实现文件上传
Mar 27 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
详解vue项目构建与实战
Jun 27 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
js计时事件实现圆形时钟
Mar 25 Javascript
js实现动态创建的元素绑定事件
Jul 19 #Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 #Javascript
详谈JS中实现种子随机数及作用
Jul 19 #Javascript
全面了解JavaScript对象进阶
Jul 19 #Javascript
EasyUI中在表单提交之前进行验证
Jul 19 #Javascript
jQuery EasyUI提交表单验证
Jul 19 #Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 #Javascript
You might like
透析PHP的配置文件php.ini
2006/10/09 PHP
网站当前的在线人数
2006/10/09 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
vue引入jq插件的实例讲解
2017/09/12 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
简单了解python元组tuple相关原理
2019/12/02 Python
pytorch masked_fill报错的解决
2020/02/18 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
校园元旦活动总结
2014/07/09 职场文书
社区文艺活动方案
2014/08/19 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
老乡聚会通知
2015/04/23 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python