如果我使用$.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 :(得分: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});