2010-07-20 2 views
3

Возможно ли и умнее хранить дополнительные данные внутри объекта jQuery?jQuery: хранить дополнительные/дополнительные данные/информацию внутри объекта jQuery?

Прямо сейчас у меня есть объекты, содержащие некоторые данные, но эти объекты также имеют визуальное представление этих данных. Это работает, но у меня есть много кода, чтобы синхронизировать их.

Например, если вы удаляете объект из dom, мне также необходимо удалить связанный объект из массива объектов. Удаление довольно просто, но это немного усложняется, если я начинаю сортировать/перемещать объекты вокруг.

ответ

11

Вы можете использовать $.data() для этого :)

Например:

$.data(element, 'varName', value);  //store 
var value = $.data(element, 'varName'); //get 

Или использовать метод объекта .data():

$("#ElementID").data('varName', value);  //store 
var value = $("#ElementID").data('varName'); //get 

Это не хранит данные на объект, скорее он сохраняет его в $.cache (попробуйте в консоли на этой странице), но это связанных с объектом, через this[$.expando].

Однако если вы вызываете .empty(), который удаляет объект, или .remove(), он сделает очистку для вас. Вы также можете позвонить .removeData() или $.removeData(), чтобы удалить его напрямую.

+0

Ничего себе, это совершенно. Спасибо за ответ. – Pickels

+0

@Pickels - Welcome :) Я добавил еще несколько методов в конце, которые могут вас заинтересовать, поскольку вы управляете объектами напрямую (по крайней мере, это мой вопрос). –

+0

Мне показалось, что я читал о кеше раньше, так что мне стало интересно, в первую очередь, если бы можно было хранить связанные данные. Спасибо за дополнительные методы, это сделает мой код намного менее сложным. – Pickels

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