我正在尝试使用jquery.data
方法从节点服务器检索一堆项目的ID,并将其作为attr
或data
保存为每个项目,稍后再使用用于更新项目。
但该属性始终返回“未定义”
我尝试了.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>
答案 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>