Jquery Can';t set.data()用于元素

Jquery Can';t set.data()用于元素,jquery,element,Jquery,Element,我无法向动态添加的元素添加数据: var newItem = "<li>" + poi.Title + "</li>"; $(newItem).data('poiID', poi.ID); $(newItem).data('poiTitle', poi.Title); 就在上面一行之后,但我一直得到“undefined”。您的newItem还不在DOM中。附加它,然后可以向其添加.data() 或者你可以这样做 var newItem = $("<li>"

我无法向动态添加的元素添加数据:

var newItem = "<li>" + poi.Title + "</li>";
$(newItem).data('poiID', poi.ID);
$(newItem).data('poiTitle', poi.Title);

就在上面一行之后,但我一直得到“undefined”。您的
newItem
还不在DOM中。附加它,然后可以向其添加
.data()

或者你可以这样做

var newItem = $("<li>" + poi.Title + "</li>");
$(newItem).data('poi', poi); //That way the whole object is added to the element.
var newItem=$(“
  • ”+poi.Title+“
  • ”); $(newItem).data('poi',poi)//这样,整个对象将添加到元素中。

    然后将其附加到DOM。

    这是因为每次执行
    $(newItem)
    操作时,您都在创建一个新元素,而实际上并没有存储对它的引用

    尝试:

    var newItem=$(“
  • ”+poi.Title+“
  • ”);/*将元素创建为newItem*/ newItem.data('poid',poi.ID);/*向现有元素添加数据*/ 警报(newItem.data('poid'));/*查看您的数据*/

    请注意,此时新元素尚未附加到DOM。要使其显示在页面上,您需要使用诸如
    append()
    prepend()
    等方法附加
    newItem

    更改代码如下:

    var newItem = $("<li>" + poi.Title + "</li>");
    newItem.data('poiID', poi.ID);
    newItem.data('poiTitle', poi.Title);
    
    ...
    
    alert(newItem.data('poiID'));
    
    var newItem=$(“
  • ”+poi.Title+“
  • ”); newItem.data('poid',poi.ID); newItem.data('poi.Title',poi.Title); ... 警报(newItem.data('poid'));

    小提琴示例:

    我尝试了以下方法:var newItem=“
  • ”+poi.Title+“
  • ”$(“#项目列表>ul”)。追加(新项目)$(newItem)。数据('poid','123');警报($(newItem).data('poid');但它不起作用:(和tnx的快速重播:)投票反对?有趣。和其他人的答案一样。您需要将它添加到DOM中,因为
    newItem
    是一个字符串,所以必须将它重新声明到附加的元素中。var newItem=“
  • ”+poi.Title+”
  • ”$(“#项目列表>ul”)。追加(新项目);var newItem=$(“#itemslitpage>ul”).find(“li[title=“+poi.title+”]”)$(newItem)。数据('poid','123');警报($(newItem).data('poid');否决票不是我的兄弟。。我还不能投票:)好像有人在跟踪你;)非常感谢你的回答^ ^ ^我敬佩你下次投票!谢谢这一评论只是笼统地发表的。我通常不会那么早就投反对票。我确实做了编辑,所以可能是在看到编辑之前。哦,好吧。下次我得快点!用于快速重播的tnx。。iv尝试给每个新元素一个id。。但它不起作用:(您只能在它们被添加到DOM中后按id搜索它们。但是,如果它只是您正在创建的一个元素,那么只存储对它的引用就简单多了,如上面的示例所示。
    var newItem = $("<li>" + poi.Title + "</li>");  /* create element as newItem */
    newItem.data('poiID', poi.ID);                  /* add data to existing elem */
    alert(newItem.data('poiID'));                   /* peek at your data */
    
    var newItem = $("<li>" + poi.Title + "</li>");
    newItem.data('poiID', poi.ID);
    newItem.data('poiTitle', poi.Title);
    
    ...
    
    alert(newItem.data('poiID'));