JQuery - 来自.data()的数据丢失了

时间:2012-10-31 12:26:17

标签: jquery

我在创建锚点,存储数据并将其附加到div元素

的函数中使用此代码
var x = $("<a class='randomclass'></a>");
x.data('foo', 'bar');
console.log(x.data());
...
$("<div></div>").append(
    x
);
...

现在,当我尝试使用一个事件处理程序来获取该数据时,它会显示其未定义。我尝试了不同的访问元素的方法,但它们都没有返回数据

$("body").on("click", "a.randomclass", function (event) {
   event.preventDefault();
   console.log( $(event.target).data('foo') );
   console.log( $(event.currentTarget).data('foo') );
   console.log( $(this).data('foo') );
});

为什么会这样?

编辑:修正了拼写错误。

2 个答案:

答案 0 :(得分:4)

好的,我想我找到了答案。

问题是我使用.html()获取元素的标记并将其传递给函数。

我想这意味着该元素的任何数据都会丢失,因为.html()只获取该元素的字符串表示。

答案 1 :(得分:2)

似乎适合我。 jsFiddle

var x = $("<a class='randomclass'>test link</a>");
x.data('foo', 'bar');
console.log(x.data());

$("body").append(x);

$("body").on("click", "a.randomclass", function(event) {
    event.preventDefault();
    console.log($(this).data());
});​