Хранение данных Jquery () - PullRequest
       5

Хранение данных Jquery ()

7 голосов
/ 08 декабря 2010

Может ли кто-нибудь сказать мне, где jquery data() хранит данные и когда они удаляются и как?

Есть ли проблемы с производительностью, если я использую это для сохранения результата вызова ajax?

Например:

$("body").data("test", { myData: 'abcd'});

Ответы [ 2 ]

28 голосов
/ 08 декабря 2010

Все данные хранятся в свойстве объекта jQuery с именем cache. Зарегистрируйте содержимое $.cache в консоли, чтобы увидеть все данные и события, связанные с любым элементом DOM.

Способ, которым jQuery связывает объект DOM с объектом в этом кэше, заключается в манипулировании объектом DOM. Скажем, у нас есть элемент ввода

<input type="text" value="hello" />

, который имеет ключ данных с именем "foo"

$(e).data("foo", "bar");

Теперь jQuery поддерживает случайную строку вида jQuery<current time in ms>, например, jQuery1291790929680, которая также доступна для $.expando. jQuery добавляет эту строку расширения в качестве ключа к каждому объекту DOM, с которым связан элемент данных или событие. Таким образом, объект DOM для указанного выше элемента ввода будет содержать этот ключ расширения с некоторым целочисленным значением, например:

jQuery1291790929680: 4

4 - это случайный пример, но это число обозначает индекс в объекте $.cache, где хранятся связанные данные и события для этого объекта DOM. Таким образом, учитывая эту информацию, для извлечения данных из указанного выше элемента ввода мы можем косвенно написать:

$.cache[4]["foo"]

который должен возвращать "bar", что является косвенным способом записи $(e).data("foo").

иллюстрированный пример вышеуказанной ерунды:)

3 голосов
/ 08 декабря 2010

посмотреть содержимое из jquery

Метод jQuery.data () позволяет нам присоединять данные любого типа к элементам DOM таким образом, чтобы это было безопасно от циклических ссылок и, следовательно, без утечек памяти.jQuery гарантирует, что данные удаляются при удалении элементов DOM с помощью методов jQuery и когда пользователь покидает страницу.Мы можем установить несколько отдельных значений для одного элемента и получить их позже:

...