我正在尝试使用 jquery.data
方法从节点服务器检索一堆项目的 ID,并将其作为attr
或data
保存为每个项目,稍后使用它来更新项目。
但该属性始终返回"未定义"。
我尝试了.data
和.attr
,结果都相同。详细说明:我正在尝试做的是从服务器获取元素列表,为每个元素动态创建 li 标签,然后以某种方式将来自服务器的 ID 嵌入到每个创建的 HTML 元素中作为自定义属性或 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>
$(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>
问题是因为你正在创建两个单独的$(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>