使用attr()向数据属性数组添加名称和值

时间:2017-06-17 16:42:44

标签: jquery attr custom-data-attribute

我试图在数据属性中构建和数组,但是当我尝试添加名称和值时,我得到[object,object]

<div class="wrapper"></div>

$post_url = "http://example.ai";
$post_id = "750";
$(".wrapper").attr("data-history", {
  id: $post_id,
  url: $post_url
});

我首先要创建数据属性&#34; history&#34;但后来又添加了[对象,对象]。在此之后,我需要在&#34;历史&#34;中添加另一个名称/值。下一个事件的数组。

1 个答案:

答案 0 :(得分:2)

两个问题,一个是你不应该在class属性中有点(。)而必须将两个属性添加为JSON(或者使用.data,这取决于你想如何使用属性)

<div class="wrapper"></div>

$post_url = "http://example.ai";
$post_id = "750";
$(".wrapper").attr("data-history", JSON.strinify({
  id: $post_id,
  url: $post_url
}));

$post_url = "http://example.ai";
$post_id = "750";
$(".wrapper").data("history", {
  id: $post_id,
  url: $post_url
});

编辑:

要添加新项目,只需获取旧数据并将新数据添加到其中

$post_url = "http://example.ai";
$post_id = "750";
var data = $(".wrapper").attr("data-history");
if (!data){
    data = [];
}
else{
    data = JSON.parse(data);
}
data.push({
  id: $post_id,
  url: $post_url
});
$(".wrapper").attr("data-history", JSON.strinify(data));

$post_url = "http://example.ai";
$post_id = "750";
var data = $(".wrapper").data("history");
if (!data){
    data = [{
        id: $post_id,
        url: $post_url
    }];
}
else{
    data.push({
        id: $post_id,
        url: $post_url
    });
}    
$(".wrapper").data("history", data);