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'));