# 20: Данные! данные-*! .данные()! .attr (данные- *)! - CSS-хитрости

Anonim

Данные. В мире jQuery все дело в битах информации, которые прикрепляются непосредственно к элементам (а не, скажем, к переменной, которая несет ответственность только за себя). Существует масса способов сохранить биты данных на «стороне клиента» (в браузере, а не на сервере). Есть переменные любого вида, куки, localStorage, indexDB и кто знает что еще. Данные используются, когда эти данные имеют прямое отношение к определенному элементу.

Как и многие методы jQuery, у него есть сеттер (два параметра):

$("#thing").data("name", "value");

и геттер (один параметр):

$("#thing").data("name"); // "value"

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

Один из способов представления данных - это что-то вроде пространства имен. Многие элементы могут использовать одно и то же «имя» данных, но иметь разные значения.

В старой демонстрации CSS-Tricks, слайдере Google Maps, есть реальный пример использования. В этой демонстрации есть список мест и встроенная карта Google. При наведении курсора на места карта перемещается к центру этого места. Для этого API карты нужны координаты. Имеет смысл иметь эти данные в HTML для этих мест, но нам не нужно их видеть. Это идеальный вариант использования data-*атрибутов в HTML (новое в HTML5). Тогда элемент списка в этом списке местоположений может быть таким:


  • O'Hare Airport

    Flights n' stuff

    About: Info about location…

  • data-*это просто способ сказать data- anything . Вы можете просто придумать атрибуты данных. Все, что вы хотите. В этом случае мы составили один для широты, а другой - для долготы. Когда на этом элементе списка срабатывает событие наведения мыши, мы просто используем геттер jQuery, .data()чтобы извлечь информацию и использовать ее с API.

    Итак, теперь мы рассмотрели данные двумя способами: данные, которые устанавливаются и получаются из самого JavaScript, и данные, которые начинаются в HTML и используются JavaScript. И то, и другое в порядке, и API такой же. Вы можете подумать об использовании .data()в качестве получателя информации в rel = "jQuery">$("#thing").attr("rel"); // or any other attribute

    Вы можете использовать его и так, если хотите:

    $("#thing").attr("data-geo-lat");

    .data()Добытчик это просто ярлык. И мне это нравится, потому что это помогает вам правильно настроиться.

    Однако важно отметить, что использование .data()в качестве установщика фактически не изменяет data-*атрибут в HTML . Это хорошее значение по умолчанию, потому что отсутствие изменения DOM означает, что он работает быстрее. Если вам абсолютно необходимо изменить атрибут в HTML, используйте .attr()метод как установщик. Также обратите внимание, что при использовании .attr()вам необходимо включить префикс «data-», который вам не нужен .data().

    $("#thing").attr("data-name", "Chris");

    Возможно, вам потребуется сделать это, чтобы вы могли быть уверены, что другие части приложения имеют доступ, или если вы делаете что-то вроде написания селекторов CSS вместо них (например (data-something="whatever") ( ))