无法为元素设置.data()

时间:2012-09-13 15:42:32

标签: jquery element

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

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

我试图添加这个:

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

在上面一行之后,但我一直“未定义”。

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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。要让它显示在页面上,您需要使用newItemappend()等方法附加prepend()

答案 2 :(得分:-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。