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 相关文章推荐
解决JS中乘法的浮点错误的方法
Jan 03 Javascript
js事件监听机制(事件捕获)总结
Aug 08 Javascript
JS制作简单的三级联动
Mar 18 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
Aug 31 Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 Javascript
loading动画特效小结
Jan 22 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
npm的lock机制解析
Jun 20 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 Javascript
Vue实现图书管理案例
Jan 20 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
一个捕获函数输出的函数
2007/02/14 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php mssql 时间格式问题
2009/01/13 PHP
PHP 彩色文字实现代码
2009/06/29 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python入门篇之字典
2014/10/17 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
销售人员自我评价
2014/02/01 职场文书
小学元宵节活动总结
2015/02/06 职场文书
小学生安全保证书
2015/05/09 职场文书
2015大一新生军训感言
2015/08/01 职场文书
Python anaconda安装库命令详解
2021/10/16 Python