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 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
node.js超时timeout详解
Nov 26 Javascript
优化RequireJS项目的相关技巧总结
Jul 01 Javascript
jquery对象和DOM对象的相互转换详解
Oct 18 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
Mar 02 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 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中static关键字原理的学习研究分析
2011/07/18 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python+Django+apache的配置方法详解
2016/06/01 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python求凸包及多边形面积教程
2020/04/12 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
购房意向书
2014/04/01 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
服务承诺书范文
2014/05/19 职场文书
施工工地安全标语
2014/06/07 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
计算机实训心得体会
2016/01/14 职场文书