Действительно ли возможно установить несколько атрибутов данных с помощью jQuery.attr () функция?

Это работает:

$(myObj).attr("data-test-1", num1);
$(myObj).attr("data-test-2", num2);

Но это не делает:

$(myObj).attr({
  data-test-1: num1,
  data-test-2: num2
});

Я пропускаю что-то действительно очевидное здесь?

60
задан 7 May 2013 в 19:17

1 ответ

Извините за регистрацию ответа на уже решенный вопрос после такого количества лет.

я просто думал о совершенствовании потока с рекомендуемым решением <глоток> [необходима цитата] как в дату.

Начиная с 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
1
ответ дан 1 November 2019 в 10:00

Другие вопросы по тегам:

Похожие вопросы: