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 相关文章推荐
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
在JS中如何调用JSP中的变量
Jan 22 Javascript
js调试系列 初识控制台
Jun 18 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
Feb 20 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
Mar 03 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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
图形数字验证代码
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
浅析javascript 定时器
2014/12/23 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python函数返回多个值的示例方法
2013/12/04 Python
Python 的类、继承和多态详解
2017/07/16 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
使用Python来开发微信功能
2018/06/13 Python
对Python中plt的画图函数详解
2018/11/07 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
大学生自我鉴定
2013/12/16 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
解析Java中的static关键字
2021/06/14 Java/Android