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 相关文章推荐
Jquery下:nth-child(an+b)的使用注意
May 28 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Oct 15 Javascript
javascript实现炫酷的拖动分页
May 11 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
Vue程序调试的方法
Jun 17 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实现的带超时功能get_headers函数
2015/02/10 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
简单说说angular.json文件的使用
2018/10/29 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python实现的udp协议Server和Client代码实例
2014/06/04 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python中collections模块的基本使用教程
2018/12/07 Python
百度软件工程师职位
2013/02/14 面试题
中华魂演讲稿
2014/05/13 职场文书
数学教研活动总结
2014/07/02 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
导游词之西安骊山
2019/12/20 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB