在定义javascript函数时是否可以使用变量的当前值?
在下面的代码中,我想将一个click函数添加到div数组中,每个div都有i
的不同值,即。第一个div应该调用setCurrentStyleIndex(0)
。目前,他们都会在通话时调用i
的任何值。
对不起,如果这是一个愚蠢的问题。
Step3.populateStyleMenu = function() {
var stylePopup = $("#stylePopup");
for(var i = 0; i < Step3.fontStyles.length; i++) {
var div = $('<div>'+Step3.fontStyles[i][0]+'</div>');
div.css({
'font-weight': Step3.fontStyles[i][1],
'font-style': Step3.fontStyles[i][2],
})
div.data('style', Step3.fontStyles[i]);
div.addClass('personalizePopupItem personalizeStyleItem');
div.click(function() {
setCurrentStyleIndex(i);
});
stylePopup.append(div);
}
}
答案 0 :(得分:2)
尝试创建一个闭包(未经测试):
(function (i) {
div.click(function() {
setCurrentStyleIndex(i);
});
})(i);
答案 1 :(得分:1)
是的,你可以这样做:
div.click((function() {
var inx = i;
return function() {
setCurrentStyleIndex(inx);
}
})());