获取原始变量值

时间:2016-03-08 10:16:04

标签: javascript jquery

我试图在回调函数中使用变量值,但在写入函数时无法获取变量的原始值。

for (i=0; i<2; i++) {
    if ($.type(picker[i]) == "object") {
        var id = picker[i].$root[0].id;
        picker[i].on({
            set: function() {
                alert("#" + id + " .picker__holder");
            },
        });
        // other code..
    }
}

这段代码应该经过两次选择器对象,其中id值是第一个&#34; datepicker&#34;并在第二次运行&#34; datepicker - 2&#34;但是当调用回调时,id始终是第二个值&#34; datepicker - 2&#34;拾取器[0] .on()回调的位置我需要它作为第一个(&#34; datepicker&#34;)。

我认为这是因为在执行回调代码时会读取变量的值,到那时它会有最后一个值。

对此有什么合理的解决方法?

最佳,

Alari

1 个答案:

答案 0 :(得分:1)

您需要将内部异步调用重构为函数。

for (i=0; i<2; i++) {
    if ($.type(picker[i]) == "object") {
        var id = picker[i].$root[0].id;
        // other code..
        asynhCall(picker, i, id);
    }
}
function asynhCall(picker, i, id)
{
        picker[i].on({
            set: function() {
                alert("#" + id + " .picker__holder");
            },
        });
}

这是因为在执行asynch-callback处理程序时,只有id才会使用最后一个值(因为event-loop model)。