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

Add name and value to data attribute array with attr()

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

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

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

我首先创建了数据属性 "history",然后它向其中添加了 [object, object]。在此之后,我需要在下一个事件中向 "history" 数组添加另一个 name/value。

有两个问题,一个是 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);