2011-02-04 3 views
7

Слишком часто я нахожу, что храню данные объекта в скрытых элементах dom. Мне было любопытно, есть ли способ привязать эти данные к самому узлу dom. Когда я пытаюсь создать атрибуты «на лету», он, похоже, не работает. Было бы намного легче получить доступ к свойству this.something вместо доступа к html, содержащемуся в дочернем элементе. Я чувствую, что должен знать, как это сделать, но я этого не делаю. Благодарю.альтернатива скрытию данных в divs?

+0

Удивительно, спасибо, ребята. – Orbit

+0

Как уже упоминалось, jQuery.data - это, вероятно, то, что вы ищете. Тем не менее, посмотрите на спецификации html5 и атрибуты 'data-', которые являются довольно удивительными, и что-то, что вы увидите, уже используется на многих сайтах, поскольку они не ломаются в браузерах без html5 :) –

+0

Не знаете, почему добавление атрибуты «на лету» не работают на вас. Взгляните на этот пример, чтобы увидеть, как заставить его работать (http://www.webdevout.net/test?01o) – nybbler

ответ

9

Там абсолютно есть! jQuery's .data().

$('#someId').data('myData', someValue); // To store the data 
$('#someId').data('myData'); // To retrieve it again 

Любая переменная JavaScript может храниться как данные - это не ограничивается строками.

Обратите внимание, что это фактически не прикрепляет данные к узлу DOM, как вы говорите (чего следует избегать). jQuery хранит свой собственный кеш всех хранящихся вами данных и узлов DOM, к которым вы хотите их подключить. Таким образом, это не то же самое, что и domNode.myData = someValue.

+2

Стоит отметить, что метод 'data()' будет использовать атрибуты data-'HTML5 как механизм хранения/поиска. Можно написать свою разметку с атрибутами данных, которые могут быть прочитаны jQuery. EG: '

Cat
' значение атрибута 'data-animal' может быть восстановлено следующим образом:' alert ($ ('# animal-1'). Data ('animal')); // cat' –

+0

@ Натан, я, наверное, должен был упомянуть об этом. Хотя атрибут HTML используется только для извлечения, а не для хранения, и только для начального значения. –

Смежные вопросы