2016-06-10 19 views
0

我想使用jquery data()在html元素上存储JSON。然而,我的元素实际上是一个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/

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

我不想使用它的属性。我想追加span元素,然后在我的脚本的其他地方使用json数据 – guub

+1

@guub如果您不明白我的答案,您将不得不发布使用该对象的代码,以便我可以提供更相关的示例。该对象在'el.data(“test”)'中。你已经得到了,问题在于你如何使用它,而你没有发布该代码。如果你需要进一步的帮助,你将不得不发布你的代码。 –

+0

我更新了帖子并添加了小提琴:https://jsfiddle.net/6mhgwtk1/1/ – guub

0

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