如何将数据设置为新元素

时间:2014-09-22 20:55:33

标签: javascript jquery

如果我使用$.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
})

谢谢。

2 个答案:

答案 0 :(得分:0)

要使用jquery Data,您不能在字符串中执行div,您可以在每个函数内执行此操作。

Var a = []; a.push($('div',{text:'element'})。data({one:1,two:2})

然后追加a。

答案 1 :(得分:0)

如果必须使用长字符串创建所有div,请使用第二个$.each-loop来查找div并在其上设置数据:

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

一个较短的方法在每个步骤中在$.each()内创建一个真正的div元素,在其上设置数据并将div添加到jQuery对象。之后,将upfilled 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});