我无法将数据添加到动态添加的元素:
var newItem = "<li>" + poi.Title + "</li>";
$(newItem).data('poiID', poi.ID);
$(newItem).data('poiTitle', poi.Title);
我试图添加这个:
alert($(newItem).data('poiID'));
就在上述行之后,但我不断得到“未定义”。
像这样更改您的代码:
var newItem = $("<li>" + poi.Title + "</li>");
newItem.data('poiID', poi.ID);
newItem.data('poiTitle', poi.Title);
...
alert(newItem.data('poiID'));
小提琴示例:http: //jsfiddle.net/P4HWb/
那是因为每次你都$(newItem)
在创建一个新元素,而实际上并没有存储对它的引用。
尝试:
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 */
请注意,此时您的新元素尚未附加到您的 DOM。要将其显示在页面上,您需要使用、等newItem
方法进行附加。append()
prepend()
你newItem
还没有在 DOM 中。附加它,然后您可以添加.data()
到它。
或者你可以做这样的事情。
var newItem = $("<li>" + poi.Title + "</li>");
$(newItem).data('poi', poi); //That way the whole object is added to the element.
然后将其附加到 DOM。