Как использовать атрибуты data в jQuery и js

Атрибуты data-* - это особые типы атрибутов, которые можно использовать для хранения дополнительной информации в HTML-элементе.

"data-* " служит общим префиксом для этих атрибутов, где "*" может быть любым именем, которое вы выберете.

warning icon

Имя атрибуиа data должно содержать только строчные буквы и должно начинаться с буквы.

data атрибуты используются для хранения пользовательских данных на стороне клиента без использования дополнительных cookies. В данном примере data-author и data-topic - это data-* атрибуты.

<article id="example" data-author="John Doe" data-topic="web development"></article>

Вы можете затем получить доступ к этим значениям и использовать их в вашем JavaScript:

var element = document.getElementById('example');
var author = element.getAttribute('data-author');
var topic = element.getAttribute('data-topic');

console.log(author);  // John Doe
console.log(topic);  // web development

Таким образом, атрибуты data-* используются для хранения дополнительной информации, которая может быть полезна в вашем JavaScript коде.

Какие данные можно хранить в атрибутах data-*?

Атрибуты data-* могут хранить любую информацию, которая может быть представлена в виде строк. Это могут быть числа, строки, даты, JSON-объекты. Помимо этого, данные полностью контролируются разработчиком и их можно использовать в приложениях JavaScript и jQuery.

Можно ли хранить массивы в атрибутах data-*?

Массивы и даже объекты можно хранить в атрибутах data-* посредством их сериализации в формате JSON.

Все данные, которые вы помещаете в атрибуты data-, сохраняются и извлекаются как строки. Это значит, что после сохранения массива или объекта в атрибуте data-, вам нужно будет конвертировать строку обратно в массив или объект.

Вот пример, как вы можете хранить массив в элементе data-*:

<div id="myDiv" data-array='["item1", "item2", "item3"]'></div>

Теперь, когда нам нужно получить наш массив обратно в Javascript, мы можем сделать следующее:

let dataValue = document.querySelector('#myDiv').dataset.array;
let array = JSON.parse(dataValue);
console.log(array); // ["item1", "item2", "item3"]

Потребность в сериализации и десериализации делает использование сложных структур данных в атрибутах data-* несколько менее удобным, чем хранение базовых типов данных. Но это всё равно остается повсеместно применяемым подходом во многих ситуациях.

Как изменить, удалить, установить data в jQuery

Метод .data() jQuery позволяет нам не только извлекать data-* значения, но также устанавливать их.

//Установить data-* значение
$("#myElement").data("my-key", "my value");

//Получить data-* значение
$("#myElement").data("my-key");

//Удалить data-* атрибут
$("#myElement").removeData("my-key");

Функции .attr() и .removeAttr() 

В jQuery attr() и .removeAttr()  используются для работы с атрибутами элементов, включая data-атрибуты.

Для получения значения атрибута:

var value = $('#myelement').attr('data-key');

В этом коде мы получаем значение атрибута 'data-key' у элемента с id 'myelement'.

Что бы установить значение атрибута:

$('#myelement').attr('data-key','value');

Этот код устанавливает значение атрибута 'data-key' в 'value' у элемента с id 'myelement'.

Метод .removeAttr() используется для удаления атрибута из элемента.

$('#myelement').removeAttr('data-key');

Этот код удаляет атрибут 'data-key' у элемента с id 'myelement'.

Какие отличия .attr()/removeAttr() от .data()/removeData()

Одним из важных отличий работы методов .attr()/removeAttr() от .data()/removeData() в jQuery является то, что .attr() и .removeAttr() меняют фактический DOM и внесенные изменения видны при просмотре HTML-кода, в то время как изменения, выполненные через .data()/removeData(), видны только через JavaScript и не отражаются в HTML.

Как изменить, удалить, установить data в JavaScript

В JavaScript вы можете использовать свойство dataset для доступа к data-* атрибутам.

//Установка значения
document.querySelector('#myElement').dataset.myKey = "my value";

//Получение значения
document.querySelector('#myElement').dataset.myKey;

//Удаление значения
delete document.querySelector('#myElement').dataset.myKey;

В JavaScript используется свойство dataset, которое возвращает объект, где каждый data-* атрибут становится свойством этого объекта. Это свойство позволяет читать, записывать и удалять data-* атрибуты.

Оставить комментарий