js闭包初体验
2015-08-03 09:50
525 查看
对于js的闭包,一直以来只有书面上的了解,却从来没有在实战中使用,最近两天看了很多关于js的博客,了解了一些js闭包的作用,于是有了以下的代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>闭包演示</title>
<style type="text/css">
p {background:gold;}
</style>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript">
function init() {
var pAry = document.getElementsByTagName("p");
var Ary = $("p");
for( var i=0; i<Ary.length; i++ ) {
Ary.eq(i).data("i",i);
}
for( var i=0; i<Ary.length; i++ ) {
// pAry[i].onclick = function() { 注释的是使用了jquery.data的方法来产生相同的效果,但是很明显闭包更加方便
// alert(i);
// Ary.eq(i).click(function(){
// // alert($(this).index());
// alert($(this).data("i"));
// });
// pAry[i].onclick=(function(i){
// return function(){alert(i);}
// })(i);
Ary.eq(i).click((function(i){
return function(){alert(i);}
})(i));
}
// }
}
</script>
</head>
<body onload="init();">
<p>产品 0</p>
<p>产品 1</p>
<p>产品 2</p>
<p>产品 3</p>
<p>产品 4</p>
</body>
</html>
如果不用闭包,你每次点击不同的p段落,弹出的永远都是5.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>闭包演示</title>
<style type="text/css">
p {background:gold;}
</style>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript">
function init() {
var pAry = document.getElementsByTagName("p");
var Ary = $("p");
for( var i=0; i<Ary.length; i++ ) {
Ary.eq(i).data("i",i);
}
for( var i=0; i<Ary.length; i++ ) {
// pAry[i].onclick = function() { 注释的是使用了jquery.data的方法来产生相同的效果,但是很明显闭包更加方便
// alert(i);
// Ary.eq(i).click(function(){
// // alert($(this).index());
// alert($(this).data("i"));
// });
// pAry[i].onclick=(function(i){
// return function(){alert(i);}
// })(i);
Ary.eq(i).click((function(i){
return function(){alert(i);}
})(i));
}
// }
}
</script>
</head>
<body onload="init();">
<p>产品 0</p>
<p>产品 1</p>
<p>产品 2</p>
<p>产品 3</p>
<p>产品 4</p>
</body>
</html>
如果不用闭包,你每次点击不同的p段落,弹出的永远都是5.
相关文章推荐
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- 使用BAT一句话命令实现快速合并JS、CSS
- js显示当前星期的起止日期的脚本
- 爆炸式的JS圆形浮动菜单特效代码
- js select常用操作控制代码
- 从jsp发送动态图像
- 原生js结合html5制作小飞龙的简易跳球
- js 页面模块自由拖动实例
- js实现小鱼吐泡泡在页面游动特效
- js 提交和设置表单的值
- PHP VBS JS 函数 对照表
- PHP+JS实现大规模数据提交的方法
- 仿51JOB的地区选择效果(可选择多个地区)
- js身份证验证超强脚本
- C#与js实现去除textbox文本框里面重复记录的方法
- 28个JS验证函数收集