如何为回调保留变量

时间:2011-11-01 16:35:48

标签: jquery

如果我有以下内容:

jqxhr = $.ajax(settings)
   .done(function(result) {

但是我有一个名为myID的变量,我需要在完成ajax调用后引用它。由于ajax是异步的,我担心myID在被调用时会变脏。

问:如何保存myID的副本,使其在done方法中的值正确?我是否使用.context()?

2 个答案:

答案 0 :(得分:3)

使用闭包:

var myID = 1;
(function(myID){ // you can choose a different variable name here to avoid confusion
    jqxhr = $.ajax(settings)
        .done(function(result) {
            alert(myID); // will still be 1
        });
})(myID)

myID = 2;

这是一个例子:

http://jsfiddle.net/pcfeN/

答案 1 :(得分:0)

你可以保存到$ .data以及稍后如果有人试图重新插入 - 你就会拒绝它。

这样您就可以保存原始值