JS 闭包
时间:2010-09-16 来源:空逸云
很多时候.需要在循环的时候绑定元素事件.但实际上由于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 .大功告成!
相关阅读 更多 +