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 相关文章推荐
JAVASCRIPT style 中visibility和display之间的区别
Jan 22 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
开启BootStrap学习之旅
May 04 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
js简单实现网页换肤功能
Apr 07 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
vue+iview实现文件上传
Nov 17 Vue.js
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(8) php 数组
2010/03/05 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
浅析php学习的路线图
2013/07/10 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python httplib模块使用实例
2015/04/11 Python
python实现彩色图转换成灰度图
2019/01/15 Python
python如何实现视频转代码视频
2019/06/17 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
python定义类self用法实例解析
2020/01/22 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
经典婚礼主持词
2014/03/13 职场文书
导航工程专业自荐信
2014/09/02 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2014年财政局工作总结
2014/12/09 职场文书
军训后的感想
2015/08/07 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis