如何将数据设置为新元素

How to set data to new elements

本文关键字:元素 新元素 数据 设置      更新时间:2023-09-26

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

谢谢。

如果必须使用长字符串创建所有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对象中。之后,向上填充的jQ对象被附加到主体:

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

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

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

然后附加a.