Js循环绑定事件处理
2016-06-15 17:05
483 查看
很多时候我们在开发过程需要for循环给元素组绑定js事件,但是直接敲的话,事件响应的效果只能和最后一个元素一样,如下面的错误代码:
第一种,可以利用(function)(),如下改进代码:
第二种方法:写多一个函数,在该函数写一个闭包,js代码如下:
<script>
var btnshow=function(val){
return function(){
console.log(val);
}
}
var btn=document.getElementsByTagName('button');
for(var i=0;i<3;i++){
btn[i].onclick=btnshow(i);
}
</script>
第三种 可以利用jquert的$.each()
<script>
$(function(){
btn=document.getElementsByTagName('button');
$.each([0,1,2],function(index,value){
btn[value].onclick=function(){
console.log(value);
}
})
})
</script>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js闭包运用</title> </head> <body> <button>1</button> <button>2</button> <button>3</button> </body> </html> <script> var btn=document.getElementsByTagName('button'); for(var i=0;i<3;i++){ btn[i].onclick=function(){ console.log(i); } } </script>这是js闭包的经典运用场景,有多种方法解决它。
第一种,可以利用(function)(),如下改进代码:
<script> var btn=document.getElementsByTagName('button'); for(var i=0;i<3;i++){ (function(val){ btn[i].onclick=function(){ console.log(val); } })(i); } </script>
第二种方法:写多一个函数,在该函数写一个闭包,js代码如下:
<script>
var btnshow=function(val){
return function(){
console.log(val);
}
}
var btn=document.getElementsByTagName('button');
for(var i=0;i<3;i++){
btn[i].onclick=btnshow(i);
}
</script>
第三种 可以利用jquert的$.each()
<script>
$(function(){
btn=document.getElementsByTagName('button');
$.each([0,1,2],function(index,value){
btn[value].onclick=function(){
console.log(value);
}
})
})
</script>
相关文章推荐
- javascript 随记
- 3、javascript脚本语言
- Javascript深度复制对象
- MyEclipse安装JS代码提示(Spket插件)
- JavaScript中function的多义性
- JavaScript中function的多义性
- amCharts图表中的JavaScript中文注释引起的浏览器兼容性问题
- JSON数据中带有HTML标签解决方法
- KnockOut.js入门示例详解
- window.open中url传递一个json
- 动画插件wow.js的使用方法
- JSON简介
- JavaScript专题(二):深入理解iframe
- linq to js使用汇总
- js刷新页面方法大全
- JavaScript闭包--模仿块级作用域
- js中打印使用
- jstack, jstat, jmap, jinfo, 教你如何在背后偷窥你的进程^^
- javascript笔记
- js-循环执行一个函数