jQuery, присоединяя объекты (вместо строкового атрибута) к элементу

Я пытаюсь создать 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, оказывается, уже поддерживает объекты присоединения.

Какие-либо идеи?Заранее спасибо!

9
задан binaryLV 6 May 2010 в 12:33
поделиться

2 ответа

Вы можете использовать .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"​​​​​​​​​​​​​​
13
ответ дан 4 December 2019 в 14:27
поделиться

Я предлагаю вам использовать метод data объекта jQuery. Так вы сможете прикрепить пользовательские данные (JSON) к соответствующему элементу DOM. Вот пример кода:

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

позже вы можете получить связанные данные следующим образом:

var data = jQuery("div").data("key");
1
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: