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

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

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

 var 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恰好已经支持附加对象。

有任何想法吗? 提前致谢!

您可以使用.data()来实现此目的,如下所示:

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

您可以通过将.attr()更改为.data()来查看您的示例代码 。

 var 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"​​​​​​​​​​​​​​

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

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

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

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