2013-07-24 78 views
1

我正在使用lis從我的DOM中獲取<li>的列表,並在每個LI中更新ajax調用後的projectPhoto。但是我的「li」在回調函數中始終指lis中的最後一項,有沒有什麼辦法可以克服這個問題,或者像傳值那樣?將div元素傳遞給成功回調jquery

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

檢查此問題:http://stackoverflow.com/questions/2687679/jquery-ajax-inside-a-loop-problem – Samurai

回答

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

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); 
    }); 
});