2017-12-18 99 views
0

我有一個來自服務器的JSON響應,它返回一個包含32個對象的數組(在本例中)。類似這樣的:在動態創建的html上設置數據信息

[{object1},{ object2},{ object3}, etc]. 

每個對象都有一些信息用於填充html模板。對於這一點,我只是用一個簡單的循環:

 for(var i = 0; i < api_empresaListar.length; i++) 
      { 
      var item = api_empresaListar[i]; 
      var htmls; 
      htmls = $('...lots of html code'); 
... 

然後,它的發現/更改值只是一個簡單的事情,並追加項目上的DOM。一切正常。但是,對於代碼的一些接下來的部分,我想從我用來構建html元素的對象(我只是顯示部分信息)中訪問所有信息。所以,搜索了很多之後,我試圖用數據,像這樣:

var tp = htmls.find(".rl_grupo"); // the main div of each html element created in the loop 
$(tp).data('key', api_empresaListar[i]); // here, I expected to just insert the object data in each created item. 

但是當我嘗試在控制檯中,我得到了物體的信息符合市場預期,但總是從陣列中的最後一個元素。爲什麼會發生?我相信這可能是愚蠢的,但我無法弄清楚。

因此,任何關於如何解決這個問題的想法,或其他方法,使這項工作表示讚賞。我通過設置一些「display:none」佔位符html標籤使其工作,並使用稍後需要的信息填充這些標籤,但看起來像一個很差的解決方案...

+0

不知道我是否理解了這個問題,但是你可以嘗試'讓我'而不是'var i'嗎?請使用''''分享工作片段來複制和調試您的問題。 – gurvinder372

+0

創建它的小提琴。 –

+0

@AnupYadav更勝一籌:創建一個''''''堆棧片段 – mplungjan

回答

0

您不應在循環中設置htmls變量。我認爲你每一次都會壓縮它的內容,這就是爲什麼你只有最後一個項目。你應該做這樣的事情:(「 rl_grupo」)

var htmls = $('<div></div>'); 
for(var i = 0; i < api_empresaListar.length; i++) { 
    htmls.append($('...lots of html code')); 
} 
0

談談你的HTML代碼創建內部的每個元素設置索引號,然後遍歷$的元素,這樣的嗎?

$('.rl_grupo').each(function(){ 
    var index = $(this).data('index'); 
    var currentData = api_empresaListar[index]; 
    $(this).data('key', currentData); 
})