执行异步$ .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');
};
});
答案 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