jquery.data返回未定义的结果

时间:2018-01-31 21:14:19

标签: javascript jquery attributes attr custom-data-attribute

我正在尝试使用jquery.data方法从节点服务器检索一堆项目的ID,并将其作为attrdata保存为每个项目,稍后再使用用于更新项目。

但该属性始终返回“未定义” 我尝试了.data.attr,两者都有相同的结果。 详细说明:我要做的是从服务器中获取一个元素列表,为每个元素动态创建li标签,然后以某种方式将每个创建的HTML元素中来自服务器的ID嵌入为自定义属性或ID。 我究竟做错了什么?还有另一种方法吗?

var test = "<p>Hello</p>";
$(test).data("id", 1);
console.log($(test).data("id")); //undefined
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2 个答案:

答案 0 :(得分:4)

$(test)创建一个对象。因此,当您想要记录id时,您正在创建另一个对象并尝试读取它的data-id,这是不存在的。在单独的变量中创建并保留对象引用,并在其余部分中使用它。

var test = "<p>Hello</p>"
var jTest = $(test);
jTest.data("id", 1);
console.log(jTest.data("id"))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:1)

问题是因为您正在创建两个单独的$(test) jQuery对象。在设置data()后,您需要将引用存储在变量中。然后你可以再次读出该值。试试这个:

var test = "<p>Hello</p>"
var $test = $(test).data("id", 1); // create reference to the jQuery object
console.log($test.data("id")); // use the reference we created above
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>