Javascript动态绑定事件的简单实现代码


Posted in Javascript onDecember 25, 2010

下面是页面的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(v); } //根据标记获取对象 
function tag(element, t) { return element.getElementsByTagName(t); } 
window.onload = function() { 
//获取test下的所有li对象 
var li = tag(id("test"), "li"); 
//用循环绑定鼠标单击事件 
for(var i=0; i<li.length; i++) { 
li[i].onclick = function() { 
//期望弹出1,2,3,4 
//结果弹出的总是5 
alert("你点击了第" + (i+1) + "项"); 
} 
} 
}

为什么会出现上边的现像呢?原因是“for中的事件绑定并没有马上得到执行”。修改后的代码如下:
//根据ID获取对象 
function id(v) { return document.getElementById(v); } //根据标记获取对象 
function tag(element, t) { return element.getElementsByTagName(t); } 
window.onload = function() { 
//获取test下的所有li对象 
var li = tag(id("test"), "li"); 
//用循环绑定鼠标单击事件 
for(var i=0; i<li.length; i++) { 
(function() { 
var t = i 
li[i].onclick = function() { 
alert("你点击了第" + t + "项"); 
} 
})(); 
} 
}

测试代码,一切OK,我们正常的将循环变量i传到onclick事件对应的处理函数中。
Javascript 相关文章推荐
javascript 文章截取部分无损html显示实现代码
May 04 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
js字符串引用的两种方式(必看)
Sep 18 Javascript
Javascript中构造函数要注意的一些坑
Jan 23 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 Javascript
详解微信小程序的 request 封装示例
Aug 21 Javascript
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
浅析javascript闭包 实例分析
Dec 25 #Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 #Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 #Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 #Javascript
JQuery live函数
Dec 24 #Javascript
jquery 单击li防止重复加载的实现代码
Dec 24 #Javascript
基于jquery的关于动态创建DOM元素的问题
Dec 24 #Javascript
You might like
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
Mac下安装vue
2018/04/11 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
详解JS函数防抖
2020/06/05 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中__call__用法实例
2014/08/29 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python2与Python3的区别点整理
2019/12/12 Python
python dataframe NaN处理方式
2019/12/26 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
总经理助理职责
2014/02/04 职场文书
2014中考励志标语
2014/06/05 职场文书
公司董事长岗位职责
2014/06/08 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书