【发布时间】:2010-12-22 02:26:53
【问题描述】:
我正在使用 jQuery 的 $.each() 循环遍历 json 返回值,并将返回的类添加到它们对应的 <div>'s;但是,计数器似乎无法在立即循环之外进行进一步处理。我尝试使用 return 和外部函数调用无济于事。当我 alert() 迭代内的计数器时,它会正确显示;并且所有类都正确更新。任何见解将不胜感激。
代码:
var c = 0;
function refreshIt(){
var page = $(".navselected").attr('id');
var ids = $('.content div[id]').map(function(){
return this.id;
}).get();
$.ajax({
type:'POST',
url:page + 'functions.php',
data:{'idList[]':ids},
dataType:'json',
success:function(data){
$.each(data,function(element,load){
$("#" + element).slideUp(400,function(){
$("#" + element).removeClass("critical ok");
$("#" + element).addClass(load.status).html(load.number).slideDown(400);
if(load.status == 'ok'){
c++;
}
else{
c++;
}
});
});
$('.infostatus').addClass('infook').html("There are " + c + " errors on this page. Kudos!");
}
});
}
【问题讨论】:
-
这是一个范围问题。该变量在循环之外的任何地方都不“存在”。我不确定要推荐什么,因为我不太了解 jQuery 的 $.each 背后发生了什么
-
@jon_darkstar:不正确,var 是脚本的第一行,在所有代码块之外。
标签: javascript jquery