1

我正在使用 lis<li>从我的 DOM 中获取列表,并在每个 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);
            });
    }
4

3 回答 3

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循环中的电流。

于 2013-07-24T01:00:52.490 回答
2

你使用了 jquery,所以你可以使用$.each的 jquery。如果有帮助,请尝试此代码

$(".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);
    }); 
}); 
于 2013-07-24T01:01:59.360 回答
0

我认为这对你来说是一个很好的参考。

http://api.jquery.com/each/

于 2013-07-24T00:56:00.957 回答