jquery,将对象(而不是字符串属性)附加到元素

时间:2010-05-06 12:33:07

标签: jquery

我正在尝试使用jQuery构建DOM,并使用AJAX(数据类型= json)接收的数据填充它。我还想将这些数据存储为一个附加到特定DOM元素的对象。 jQuery是否为此提供了任何方法?我想这样做的原因是因为最初只显示部分数据;以后可能需要其他数据,具体取决于用户的操作。

我尝试使用attr(),但它存储了一个字符串“[object Object]”而不是实际的对象:

var div = $('<div/>');
div.attr('foo', {bar: 'foobar'});
alert(div.attr('foo')); // gives "[object Object]"
alert(typeof div.attr('foo')); // gives "string"
alert(div.attr('foo').bar); // gives "undefined"

另一种方法是“绕过”jQuery(div[0].foo = {bar: 'foobar'};),虽然这似乎是一个“肮脏的解决方法”,如果jQuery恰好已经支持附加对象。

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:11)

您可以将.data()用于此目的,如下所示:

div.data('foo', { bar: 'foobar' }); //sets it
var obj = div.data('foo'); //gets it

You can see your example code working here just by changing .attr() to .data()

var div = $('<div/>');
div.data('foo', {bar: 'foobar'});
alert(div.data('foo')); // gives "[object Object]"
alert(typeof div.data('foo')); // gives "object"
alert(div.data('foo').bar); // gives "foobar"​​​​​​​​​​​​​​

答案 1 :(得分:1)

我建议您使用jQuery对象的数据方法。这样,您可以将自定义数据(JSON)附加到相应的DOM元素。以下是示例代码:

jQuery("div").data("key", /* JSON object */);

稍后您可以通过以下方式获取相关数据:

var data = jQuery("div").data("key");