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 相关文章推荐
Autocomplete Textbox Example javascript实现自动完成成功
Aug 17 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
javascript真的不难-回顾一下基础知识
Jan 15 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
Dec 14 Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
微信小程序城市选择及搜索功能的方法
Mar 22 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
Sep 02 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 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
解决中英文字符串长度问题函数
2007/01/16 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
深入浅析php json 格式控制
2015/12/24 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
Javascript中replace()小结
2015/09/30 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
Android面试题附答案
2014/12/08 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
初中班级口号
2014/06/09 职场文书
农村门前三包责任书
2014/07/25 职场文书
写字楼租赁意向书
2014/07/30 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
邀请函模板
2015/02/02 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书