javascript重复绑定事件造成的后果说明
最近在修改百度地图开源的东西,想把里面耦合在一起的代码给拆分出来。拆解之后,发现了一些坑爹的问题。逻辑上没有问题的情况下,该出现的效果没有出现。然后就以为是代码哪里写得不对了,就一直找啊找的。在调试的时候发现,相应的事件被执行了两遍。瞬间就明白了,肯定在哪个地方重复绑定了事件。果然,真心脑残的绑定了两次事件。
平时在写代码的时候,如果发现绑定的事件触发了两次,那就要查看是否是绑定了两次事件了。别傻傻的先去查看代码哪里处处了,或者怀疑别人的api有问题。
此文仅记录本人开发的时候遇到的问题。最近修改的百度地图开源的东西,将会在项目发布后呈现给大家。本人菜鸟一个,希望大家指点。
以后大家在开发过程中,多注意一下。
相关推荐
-
浅析js绑定事件的常用方法
浅析js绑定事件的常用方法 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http:
-
JavaScript在for循环中绑定事件解决事件参数不同的情况
有时候要对响应一堆相似的事件,但是每个事件的参数都不同,一开始还以为挺简单的,用个for循环不就得了,结果发现,额,都是使用了最后一个参数... 上网查资料!!!结果大神说用闭包解决 代码: 复制代码 代码如下: for(var i=0;i<10;i++){ btns[i].onclick=(function(i){ return function(){alert(i)} })(i) } 大概原因是直接用btns[i].onclick=function(){alert(i)}时,JavaScri
-
js添加绑定事件的方法
先介绍js添加事件通用方法,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <p id="p1">测试添加事件:firefox使用addEventListener,ie使用attachEvent<br> 点击此p标签
-
js绑定事件this指向发生改变的问题解决方法
可对函数进行如下扩展 复制代码 代码如下: Function.prototype.bind = function(obj) { var _this = this; return function() { _this.apply(obj,arguments); } } 用法如下 复制代码 代码如下: var a = function(){ alert(this.title) }.bind(document); a(); 常用在这儿 复制代码 代码如下: function myalert() { t
-
JavaScript中利用jQuery绑定事件的几种方式小结
开发过程中经常要给DOM元素添加一些事件,下面介绍几种方式: 先写几个好看的button //引入JQuery <script type="text/javascript" src="jquery-1.8.3.min.js"></script> <span id="tips"></span> <input type="button" id="btn1"
-
理解JS绑定事件
本文为大家详细分析了JS绑定事件,供大家参考,具体内容如下 绑定事件有兼容性问题,在IE早期版本中使用的是obj.attachEvent(),而其他浏览器使用的则是addEventListener(). 这两个方法都有三个参数,分别为:事件类型,事件函数,最后一个是布尔值,true或者是false. true表示在事件捕获阶段执行,false表示在事件冒泡阶段执行. 由于IE只支持事件冒泡,所以同大多数情况下,都是将事件处理程序添加到事件流的冒泡阶段,即默认为"false" 这样可以最
-
JavaScript绑定事件监听函数的通用方法
事件绑定的3中常用方法:传统绑定.W3C绑定方法.IE绑定方法.但是,在实际开发中对于我们来讲重要的是需要一个通用的.跨浏览器的绑定方法.如果我们在互联网上搜索一下会发现许多方法,以下是比较知名的几种方法: 在开始学期下面几种方法之前,应当讨论一下,一个好的addEvent()方法应当达到哪些要求: a.支持同一元素的同一事件句柄可以绑定多个监听函数: b.如果在同一元素的同一事件句柄上多次注册同一函数,那么第一次注册后的所有注册都被忽略: c.函数体内的this指向的应当是正在处理事件的节点(
-
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
复制代码 代码如下: var $d = document; function $i(s){return $d.getElementById(s);} var _jsc={} _jsc.client=(function(){ var t={}; var b=navigator.userAgent.toLowerCase(); t.isOpera=(b.indexOf('opera')>-1) t.isIE=(b.indexOf('msie')>-1) t.isFF=(!t.isOpera&
-
Javascript动态绑定事件的简单实现代码
下面是页面的dom结构 复制代码 代码如下: <ul id="test"> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ul> 下面是javascript代码 复制代码 代码如下: //根据ID获取对象 function id(v) { return document.getElementById(
-
Javascript循环绑定事件的示例代码
例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景. Untitled Page 第1条记录 第2条记录 第3条记录 第4条记录 第5条记录 第6条记录 var list_obj = document.getElementById("list").getElementsByTagName("li"); //获取list下面的所有li的对象数组 for (var i = 0; i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这个例子循环为一组对
-
js和jquery批量绑定事件传参数一(新猪猪原创)
复制代码 代码如下: <input type="button" value="btn1" id="btn1"/> <input type="button" value="btn2" id="btn2"/> <input type="button" value="btn3" id="btn3"/>
-
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
在JS中,你写一个for循环的时候,内部的循环变量I其实是会保存在它运行的函数或类内的,所以你会发现你给元素批量绑定事件的时候,出现i=最后一个循环变量的值,这就很坑爹啊,解决的方案有2钟, 思路就是:把这个循环变量保存起来,不要让它的作用域在整个函数,而是在循环体内 1.使用闭包(如果你不懂闭包,请打开百度:www.baidu.com) 2.使用with关键字,with语法是with( obj ) { //使得可以在此直接访问obj的属性,而不用加obj.XXX } 代码示例: 复制代码 代码
-
js移除事件 js绑定事件实例应用
复制代码 代码如下: /** * @description 事件绑定,兼容各浏览器 * @param target 事件触发对象 * @param type 事件 * @param func 事件处理函数 */ function addEvents(target, type, func) { if (target.addEventListener) //非ie 和ie9 target.addEventListener(type, func, false); else if (target.att
-
JS中动态添加事件(绑定事件)的代码
两种方式:直接给对象添加事件,节点添加事件 例如给一个id为tab1的添加onclick事件 第一种情况: 复制代码 代码如下: var t = document.getElementById("tab1"); t.onclick = function tst(){ alert(''); } 第二种情况 复制代码 代码如下: var tb = document.getElementById("tab1"); if(window.addEventListener){
随机推荐
- 让Json更懂中文(JSON_UNESCAPED_UNICODE)
- mysql出现提示错误10061的解决方法
- jQuery遮罩层实现方法实例详解(附遮罩层插件)
- JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
- iOS runtime知识梳理
- 合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
- 用PHP生成excel文件到指定目录
- 基于linux下获取时间函数的详解
- JavaScript实现滚动栏效果的方法
- C++基于回溯法解决八皇后问题示例
- 微信小程序 自定义Toast实例代码
- 实现SQL分页的存储过程代码
- 基于jQuery实现拖拽图标到回收站并删除功能
- 远程镜像与备份SVN服务器的方法小结第1/2页
- JSON 数据详解及实例代码分析
- javascript的几种写法总结
- 深入nodejs中流(stream)的理解
- php利用反射实现插件机制的方法
- 详述ASP.Net中页面之间传参方法
- c#获取本机的IP地址的代码