在追加之前将数据存储在元素上

时间:2016-06-10 03:22:02

标签: javascript jquery

我想使用jquery data()将JSON存储在html元素上。但是我的元素实际上是一个html字符串,并且还不像DOM一样。

$(".test").each(function() {
  el += "<span>"+ 25 +"</span>";
});

$("body").append(el);

我试过这个(在每个函数中)

el += $("<span>"+ 25 +"</span>").data("test", {"name":"john"});

但是当我追加el时,我会附加[object][object]来代替

如何将数据与元素相关联,并且能够在附加后检索它?

FIDDLE:https://jsfiddle.net/6mhgwtk1/1/

2 个答案:

答案 0 :(得分:2)

你做对了,但它是一个对象。当您打印或提醒对象时,它将始终显示为[Object]。而不是打印对象而不是打印它的属性,如下所示:el.data("test").name

见:https://jsfiddle.net/6mhgwtk1/

<小时/> 根据您的示例代码,我已经使用工作代码更新了您的小提琴。请参阅注释以获取解释.. https://jsfiddle.net/6mhgwtk1/3/

var el;
$("div").each(function() {
   // el is not a string here, (it's a jQuery object) so you can't concatentate it using +=
   // instead you will have to append each one to the body separately
    el = $("<span>"+ 25 +"</span>").data("test", {"name":"john"});
  $("body").append(el);
});


$("body").find("span").each(function(){
   var data = $(this).data("test");
   console.log(data);
});

答案 1 :(得分:0)

对于检索,请尝试获取el的属性(因为它是一个对象)。