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将字符串转换成字符编码列表的方法
Mar 19 Javascript
详解JavaScript中常用的函数类型
Nov 18 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
JS实现简易计算器
Feb 14 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 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 md5下16位和32位的实现代码
2008/04/09 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
一个js控制的导航菜单实例代码
2013/12/03 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
django 微信网页授权登陆的实现
2019/07/30 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
生产部岗位职责范文
2014/02/07 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫