Javascript .data()正在返回未定义的
这是我的代码:Javascript .data()正在返回未定义的,javascript,jquery,json,undefined,Javascript,Jquery,Json,Undefined,这是我的代码: $.getJSON("link here", function (result) { $.each(result, function (i, value) { $('.usersOfGroupList').append($("<li id='userElement' data-userId='' ></li>").data('userIdFromGroups', value.Id).html(value.FirstName + "
$.getJSON("link here", function (result) {
$.each(result, function (i, value) {
$('.usersOfGroupList').append($("<li id='userElement' data-userId='' ></li>").data('userIdFromGroups', value.Id).html(value.FirstName + " " + value.LastName));
console.log($(".usersOfGroupList").data());
});
});
但这给了我一个机会
未定义错误
id
需要每个元素都是唯一的,因此从li
中删除id
属性
由于要将数据属性添加到新创建的li
,因此每次都需要使用li
作为选择器和:eq(index)
来获得正确的li
你可以这样做:-
console.log($(".usersOfGroupList li:eq("+i+")").data('userIdFromGroups'));
硬编码片段示例:-
result=[{'Id':1,'FirstName':'A','LastName':'B'},{'Id':2,'FirstName':'C','LastName':'D'}];
$。每个(结果、函数(i、值){
$('.usersOfGroupList').append($(“
似乎您正在将数据提供给.usersOfGroupList
下新创建的
,因此您必须使用以下内容才能正确获取数据
$(“#userElement”).data(“userIdFromGroups”)
此外,在上面的代码中,您似乎正在使用相似的ID创建多个元素,这是一种非常糟糕的做法。从理论上讲,如果只有一个
,它就会起作用
如果没有,那就意味着对异步操作的处理不好
因为您使用的是异步函数来获取数据,然后才在所需元素上设置数据属性。同时,代码继续运行并尝试检索(尚未设置)数据属性。您需要使用console.log($(.usersOfGroupList li”).data(“userIdFromGroups”)
你的答案很好,但是你从答案中删除了id=userElement
,这并不意味着op一定会注意到或理解做错了什么。您还忽略了他的请求的异步特性,这可能就是问题所在。如果你的答案被选中,请填补空白。@fingeron举了一个我做过的例子,因为我不知道他用什么链接
来获取数据,如果他也提供了数据,我就不能在这里运行。老实说,我的观点不是给出一个工作示例,而是让op了解他哪里出了错,以及如何让它自己工作
console.log($(".usersOfGroupList li:eq("+i+")").data('userIdFromGroups'));