如何在JavaScript中保留一个值

时间:2011-03-14 16:44:32

标签: javascript jquery

执行异步$ .ajax调用后,我需要突出显示已更新的表格单元格 现在我在全局名称空间中使用$ td,这当然是个错误的想法。

问:如何在回调jqXHR时保留$ td的值?我认为答案与封闭有关,但我不知道。

var UpdateSort = function(ID,Sort){
    var jqXHR = $.ajax('Remote/Ajax.cfc', {
        data: {
        method:'UpdateSort'
        ,returnformat:'json'
        ,paramID:ID
        ,paramSort:Sort
    }
});
jqXHR.success(function(result){
    if (result.MSG == '') {
        $td.addClass('success');
    } else {
        $td.addClass('err');
    };
});

3 个答案:

答案 0 :(得分:2)

只需将其作为参数添加到您的函数中。

var UpdateSort = function(ID,Sort,td){
    var jqXHR = $.ajax('Remote/Ajax.cfc', {
        data: {
        method:'UpdateSort'
          ,returnformat:'json'
          ,paramID:ID
          ,paramSort:Sort
        }
    }).success(function(result) {
      if (result.MSG == '') {
        td.addClass('success');
      } else {
        td.addClass('err');
      }
    });
});

答案 1 :(得分:2)

关闭解决您的问题。为UpdateSort提供td的引用,并在那里定义您的成功函数:

var UpdateSort = function(ID,Sort, td){
    var jqXHR = $.ajax('Remote/Ajax.cfc', {
        data: {
        method:'UpdateSort'
        ,returnformat:'json'
        ,paramID:ID
        ,paramSort:Sort
    }
    jqXHR.success(function(result){
        if (result.MSG == '') {
            td.addClass('success');
        } else {
            td.addClass('err');
        };
    });    
});

td返回后,jqXHR.success的功能可以使用UpdateSort的值,因为它位于该函数的lexical scope中。

答案 2 :(得分:1)

添加

var that;

到您的javascript文件的顶部。 在成功函数结束时添加:

this.td = $td;
that = this;

这会将你的td文件存储在一个全局变量'that'中,你可以在回调时使用它。 看看这个关于变量的非常有用的文档:http://javascript.crockford.com/private.html