Data-атрибуты

HTML5 даёт нам возможность использовать произвольные data-атрибуты для элементов:

<div data-foo="bar"></div>

Для работы с data-атрибутами в jQuery есть несколько методов:

data()

получение всех значений в формате ключ-значение: { key: value }

data(key)

получение значения по ключу

data(key, value)

установка значения

data({
  key1: value,
  key2: value
})

установка нескольких значений

removeData(key)

удаление значения по ключу или ключам

removeData([key])

удаление нескольких значений

Вот сейчас будет сложный и важный момент!

МетодjQuery.data() не манипулирует атрибутами HTML, а работает со своим реестром, и лишь при отсутствии там данных пытается заполучить информацию из соответствующего атрибута data-*.

Не попадитесь!

<div id="my" data-foo="bar"></div>
$("#my").data("foo");      // >>> bar
$("#my").attr("data-foo"); // >>> bar

$("#my").data("foo", "xyz");

$("#my").data("foo");      // >>> xyz
$("#my").attr("data-foo"); // >>> bar !!!

$("#my").attr("data-foo", "def");

$("#my").data("foo");      // >>> xyz !!!
$("#my").attr("data-foo"); // >>> def

Наглядный пример:

Last updated