Я пытаюсь создать DOM с jQuery и заполнить его данными, которые получены с Ajax (тип данных = json). Я хотел бы также хранить эти данные как объект, присоединенный к определенному элементу DOM. JQuery предоставляет какой-либо метод для этого? Причина я хочу сделать это, состоит в том, потому что только часть данных первоначально отображена; другие данные могли бы быть необходимы позже, в зависимости от пользовательских действий.
Я пытался использовать attr()
, но это хранит строку" [объектный Объект]" вместо фактического объекта:
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, оказывается, уже поддерживает объекты присоединения.
Какие-либо идеи?Заранее спасибо!
Вы можете использовать .data ()
для этой цели, например:
div.data('foo', { bar: 'foobar' }); //sets it
var obj = div.data('foo'); //gets it
Вы можете увидеть свой пример кода, работающий здесь, просто изменив .attr ()
на .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"
Я предлагаю вам использовать метод data объекта jQuery. Так вы сможете прикрепить пользовательские данные (JSON) к соответствующему элементу DOM. Вот пример кода:
jQuery("div").data("key", /* JSON object */);
позже вы можете получить связанные данные следующим образом:
var data = jQuery("div").data("key");