将div元素传递给成功回调jquery

时间:2013-07-24 00:45:50

标签: jquery ajax callback

我使用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);
            });
    }

3 个答案:

答案 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)

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

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