JS 闭包
2010-09-16 17:46 空逸云 阅读(445) 评论(12) 编辑 收藏 举报很多时候.需要在循环的时候绑定元素事件.但实际上由于JS的机制问题,你绑定的代码是等到了你触发了事件时才引发.那么你的循环早就完成了.此时的调用肯定不是你想要的结果.
例如
for (var i = 0; i < items.length; i++) {
var item = $("<li ><a>" + i+ "</a></li>");
item.bind("click", function(){ dosometion(i) ;});
wIngreList.append(item);
}
可以百分百肯定.结果肯定不是你要.此时的i不再是你所需要的.而是items.length.那么怎么办呢?闭包可以完成我们想要的
定义一个闭包的"类"
var closeFunc = function(i) {
return function() {
dosomething(this, i);
//此Function等到事件触发时才执行,假如是click,那么this就是触发click的元素
}
}
利用这个闭包类.就可以得到我们所想要的结果
item.bind("click", new closerFunc(items[i]));
OK .大功告成!
作者:空逸云
出处:http://kongyiyun.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://kongyiyun.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
您的支持是我前进的动力,请猛击.: