Отличие $.data и $.attr в jQuery: хранение данных и HTML5 атрибуты

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Функция .data() обеспечивает хранение пользовательских данных вне DOM, что идеально подходит для данных, которые требуются только скриптам. Напротив, .attr() меняет атрибуты HTML-элементов, влияя на их представление и поведение.

JS
Скопировать код
$("#myElement").data("key", value); // Используется только на внутреннем уровне
$("#myElement").attr("key", "value"); // Видно всем

Пользуйтесь .data() для хранения внутренних данных и .attr(), когда вам необходимо изменить разметку. Запомните, что .data() не виден для DOM-дерева, в то время как .attr() явно модифицирует его.

Основные понятия подробно

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы
Кинга Идем в IT: пошаговый план для смены профессии

Глубже о .data()

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

Способности .data() включают:

  • Сохранение нестроковых значений, таких как массивы и объекты.
  • Хранение данных, которые не предназначены для посылки на сервер.
  • Управление информацией, которая часто меняется и не влияет на внешний вид страницы.

Достаточно практично, не так ли?

JS
Скопировать код
$("#safe").data("combinations", { secret_code: [1, 2, 3, 4] });
// Извлекаем информацию, словно из хранилища
$("#safe").data("combinations"); // { secret_code: [1, 2, 3, 4] }

Разбираемся с .attr()

В отличие от .data(), .attr() работает открыто и прямолинейно, обращаясь к HTML-атрибутам как к строковым значениям и напрямую модифицируя DOM. Этот метод идеально подходит для:

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

И, что немаловажно, его синтаксис прост и ясен:

JS
Скопировать код
// Устанавливаем кодовое сообщение
$("#msg").attr("data-message", "Встреча в полночь");
// Извлекаем кодовое сообщение
$("#msg").attr("data-message"); // "Встреча в полночь"

Для управления обычными атрибутами, критическими для отображения и отправки данных на сервер, .attr() — это то, что вам потребуется.