jquery.data 返回未定义的结果



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

但该属性始终返回"未定义"。
我尝试了.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>

最新更新