2014-09-22 18 views
0

如何使用$.each和字符串變量將數據添加到新元素?如何將數據設置爲新元素

我知道,如果我使用的數據屬性

var str = ''; 
$.each(data.list, function(i,r){ 
    str += '<div data-one="' + r.one + '">Element</div>'; 
}) 
$('body').append(str); 

如何做,如果我想在這種情況下使用$.data怎麼辦?

$.data(div, "data", { 
    one: r.one, 
    two: r.two 
}) 

謝謝。

+0

什麼是'div'在你的第二個例子嗎? – 2014-09-22 23:24:54

+0

@FelixKling,只是例子,我不能使用它,因爲它是字符串。 – Woohoo 2014-09-22 23:29:11

+0

所以'div'和'str'基本相同?這是缺少的信息。 (我想這完全從閱讀這個問題來看很清楚,但不是看過代碼) – 2014-09-22 23:34:42

回答

0

如果必須的。創建所有的div的長字符串,使用第二個$.each-loop找到的div,並設置數據對他們的:在每個$.each()

var str = ''; $.each(/* your code */); $('body').append(str); 

// find all divs with a data-one-attribute and iterate over them 
$('body div[data-one]').each(function(i, div) { 
    var d = data.list[i]; // find the associated item of data.list 
    $.data(div, 'data', {one: d.one, two: d.two}); // set the data on this div 
}); 

較短的方式創建步驟一個真正的div元素,集上的數據它將div添加到一個jQuery對象中,然後將已填充的jQ對象添加到body:

var divs = $(); // create an empty jQuery object being the container 
$.each(data.list, function(i, r) { 
    var d = $('<div data-one="' + r.one + '">Element</div>'); // create one div-element 
    // since d is an jQuery object, use d.data() to set the data on it: 
    d.data('data', {one: r.one, two: r.two}); 
    divs.add(d); // put the div into the container 
}); 
$('body').append(divs); // append the whole container to body 

如果你想在第二個解決方案中使用$.data(),只需更換d.data(...)有:

$.data(d[0], 'data', {one: r.one, two: r.two}); 
+0

'divs = $()的真棒主意;'謝謝! – Woohoo 2014-09-23 22:26:11

0

要使用jQuery數據,你不能在一個字符串中做div,你可以在每個函數中做到這一點。

Var a = []; a.push($( '格',{文字: '元素'})。數據({之一:1,二:2})

再追加一個

+0

'Array.push'不是存在的函數。 – 2014-09-22 23:25:20