Это работает:
$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
Но это не делает:
$(myObj).attr({
data-test-1: num1,
data-test-2: num2
});
Я пропускаю что-то действительно очевидное здесь?
Извините за регистрацию ответа на уже решенный вопрос после такого количества лет.
я просто думал о совершенствовании потока с рекомендуемым решением <глоток> [необходима цитата] глоток> как в дату.
Начиная с jQuery 1.2.3
, существует .data()
функция, которая берет аргументы для получения/устанавливания атрибутов данных (устанавливающий, несколько были доступны с тех пор 1.4.3
) как это:
/*
** In all the example below, note that
** 'data-' is removed from attribute name
*/
// Setter (single)
$('#my_image').data('test-1', 'num1');
$('#my_image').data('test-2', 'num2');
// Setter (multiple)
$('#my_image').data({'test-1':'num1', 'test-2':'num2'});
// Getter (single)
$('#my_image').data('test-1'); // num1
$('#my_image').data('test-2'); // num2
нужно отметить, что установка атрибутов данных с .data()
не обновляет DOM, таким образом, Вы не видите их в инспекторе DOM. Кроме того, они не перекрестные совместимый с .attr()
. Однако набор атрибутов данных с .attr()
может быть получен с .data()
(короче говоря, любые атрибуты, которые начинаются 'с данных -', могут быть получены с .data()
).
// Setter
$('#my_image').attr('data-test-3', 'num3'); // note the 'data-' on attr name
// Getter
$('#my_image').data('test-3'); // num3