Это работает:
$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
Но это не так:
$(myObj).attr({
data-test-1: num1,
data-test-2: num2
});
Я пропустил что-то действительно очевидное здесь?
Это работает:
$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);
Но это не так:
$(myObj).attr({
data-test-1: num1,
data-test-2: num2
});
Я пропустил что-то действительно очевидное здесь?
Конечно, вот так:
$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
Как и .attr()
, docs:
Установка нескольких атрибутов сразу
Чтобы изменить атрибут alt и добавить атрибут title в то же самое время, одновременно передавайте оба набора имен и значений в метод, используя простой объект JavaScript. Каждая пара значений ключа в объекте добавляет или изменяет атрибут:
$('#greatphoto').attr({ alt: 'Beijing Brush Seller', title: 'photo by Kelly Clark' });
При настройке нескольких атрибутов, цитаты вокруг имен атрибутов являются необязательными.
Да, возможно установить несколько атрибутов, просто используйте простой синтаксис литерала объекта. Пример:
$('#my_image').attr({
alt: 'Beijing Brush Seller',
title: 'photo by Kelly Clark'
});
Более подробную информацию о методе attr можно найти здесь.
Извините за публикацию ответа на уже решенный вопрос после стольких лет.
Я только думал о том, чтобы держать поток в курсе с рекомендуемым решением [нужная цитата] как на дате.
Начиная с 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-', могут быть получены с помощью .data()
).
// Setter
$('#my_image').attr('data-test-3', 'num3'); // note the 'data-' on attr name
// Getter
$('#my_image').data('test-3'); // num3