在引用局部变量时定义javascript函数

时间:2013-06-04 04:28:14

标签: javascript function

在定义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);
     }
}

2 个答案:

答案 0 :(得分:2)

尝试创建一个闭包(未经测试):

(function (i) {
    div.click(function() {
        setCurrentStyleIndex(i);
    });
})(i);

答案 1 :(得分:1)

是的,你可以这样做:

div.click((function() {
  var inx = i;
  return function() {
    setCurrentStyleIndex(inx);
  }
})());