Bliss.js предоставляет компактный и удобный синтаксис для работы с
HTML-элементами, включая возможность легко манипулировать
data-* атрибутами. Эти атрибуты часто используются для
хранения метаданных элементов без вмешательства в визуальное
представление страницы. Bliss.js делает доступ к ним простым и
интуитивным.
Для получения значения атрибута data-* используется
метод data. Он автоматически преобразует имя атрибута в
формат camelCase. Например, атрибут data-user-id становится
userId.
// HTML: <div id="profile" data-user-id="42"></div>
var profile = Bliss('#profile');
// Получение значения
var userId = profile.data('userId'); // 42
Особенности:
data возвращает строку, если атрибут
существует.undefined.Для изменения или добавления нового data-* атрибута
используется тот же метод data, но с двумя аргументами: имя
атрибута и новое значение.
// Установка нового значения
profile.data('userId', 99);
// Создание нового атрибута
profile.data('userRole', 'admin');
// HTML будет: <div id="profile" data-user-id="99" data-user-role="admin"></div>
Важно:
Удаление data-* атрибута производится через метод
removeAttr с полным именем атрибута:
// Удаление атрибута data-user-id
profile.removeAttr('data-user-id');
// После удаления: <div id="profile" data-user-role="admin"></div>
Метод removeAttr работает со всеми атрибутами, но при
работе с data-атрибутами следует использовать полное имя, включая
data-.
Bliss.js позволяет оперировать с несколькими атрибутами одновременно,
используя объект в методе data. Ключи объекта соответствуют
camelCase именам data-атрибутов.
profile.data({
userId: 101,
userRole: 'editor',
theme: 'dark'
});
// HTML: <div id="profile" data-user-id="101" data-user-role="editor" data-theme="dark"></div>
Преимущества:
Bliss.js может автоматически преобразовывать значения атрибутов к типам JavaScript при получении:
// HTML: <div id="settings" data-items="5" data-enabled="true"></div>
var settings = Bliss('#settings');
var items = settings.data('items'); // 5 (число)
var enabled = settings.data('enabled'); // true (булевое)
Особенности:
true, false, null,
числа и JSON объекты распознаются автоматически.Bliss.js сохраняет актуальные данные при динамическом создании
элементов через create или при добавлении через
appendTo.
var newItem = Bliss.create('div', {
data: { id: 200, type: 'widget' },
text: 'Новый элемент'
});
newItem.appendTo('#container');
// HTML: <div data-id="200" data-type="widget">Новый элемент</div>
Метод create принимает объект data и
автоматически выставляет соответствующие data-* атрибуты
при генерации элемента.
Bliss.js позволяет получить все data-атрибуты элемента сразу в виде объекта с camelCase ключами:
var allData = profile.data();
// Пример результата:
// { userId: 101, userRole: 'editor', theme: 'dark' }
Преимущества:
Методы Bliss.js тесно интегрированы с нативным
dataset:
console.log(profile.data('userRole')); // Аналогично profile.dataset.userRole
profile.data('theme', 'light'); // Аналогично profile.dataset.theme = 'light'
Bliss.js добавляет удобство: приведение типов, camelCase доступ и массовое обновление.
data.JSON.parse при необходимости.Bliss.js превращает работу с data-* атрибутами в
лаконичные и читаемые операции, сохраняя совместимость с нативным DOM
API и добавляя удобные высокоуровневые возможности.