0

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

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

我试图添加这个:

alert($(newItem).data('poiID'));

就在上述行之后,但我不断得到“未定义”。

4

3 回答 3

2

像这样更改您的代码:

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

...

alert(newItem.data('poiID'));

小提琴示例:http: //jsfiddle.net/P4HWb/

于 2012-09-13T15:45:54.077 回答
1

那是因为每次你都$(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()

于 2012-09-13T15:44:39.693 回答
-1

newItem还没有在 DOM 中。附加它,然后您可以添加.data()到它。

或者你可以做这样的事情。

var newItem = $("<li>" + poi.Title + "</li>");
$(newItem).data('poi', poi); //That way the whole object is added to the element.

然后将其附加到 DOM。

于 2012-09-13T15:44:13.683 回答