我使用lis从我的DOM获取<li>
列表,并在每个LI中获取并在ajax调用后更新projectPhoto。但是我的回调函数中的“li”总是引用lis
中的最后一项,有没有办法克服这个问题,或者传递为值?
p / s:我很确定之前已经讨论过这个问题,因为我无法用正确的术语来解决它。提前道歉。
var lis = $('.porject_list li');
for (var i = 0; i < lis.length; i++) {
var li = lis.eq(i);
var projectId = li.attr('data-project-id');
$.get("/webapi/projects/projectphoto/" + projectId, function (res) {
$("img", li).attr('src', res);
});
}
答案 0 :(得分:2)
你可以尝试这个(只需将ajax
调用包装在一个函数中)
(function(current){
$.get("/webapi/projects/projectphoto/" + projectId, function (res) {
$("img", current).attr('src', res);
});
})(li);
更新:
我没有注意到var li = lis.eq(pos);
,这是什么,无论如何,你可以使用
var li = lis[i];
获取循环中的当前li
。
答案 1 :(得分:2)
您使用了jquery,因此可以使用jquery的$.each。试试这段代码是否可以提供帮助
$(".porject_list li").each(function(i, elem) {
var projectId = $(this).attr('data-project-id');
var $li = $(this);
$.get("/webapi/projects/projectphoto/" + projectId, function (res) {
$li.find("img").attr('src', res);
});
});
答案 2 :(得分:0)
我认为这对你来说是一个很好的参考。