Установка значения динамически для атрибутов данных с использованием jquery - PullRequest
16 голосов
/ 23 августа 2011

Я широко использую атрибуты данных для управления данными в событиях на стороне клиента. Можно ли динамически присвоить значение атрибуту данных с помощью javascript или jquery?

<li data-class_value="somevalue" class="myclass"></li>


$('.myclass').click(function(){
   $(this).data('class_value') = "new value";
});

Приведенный выше код JavaScript выдает ошибку:

«Uncaught ReferenceError: Неверная левая сторона в назначении».

Может кто-нибудь сказать мне, как этого можно достичь?

Ответы [ 3 ]

27 голосов
/ 30 октября 2013

Я полагаю, что приведенные выше ответы позволят установить объект данных только для этого элемента в jQuery.

Если вам нужно установить фактический атрибут HTML data- *, вам нужно использовать это:

$(this).attr("data-class_value", "new value");

Остерегайтесь извлечения атрибутов HTML5 data- * таким же образом, поскольку, хотя вы можете использовать ярлык $(this).data("class_value"); для их извлечения, последующие извлечения будут использовать кэшированное значение в объекте данных jQuery.

Из документов jQuery :

Атрибуты данных извлекаются при первом обращении к свойству данных, а затем к ним больше не обращаются и не изменяются (все значения данных затем сохраняются внутри в jQuery).

Источник: jQuery кеширование атрибутов данных

22 голосов
/ 23 августа 2011

Нужно сделать

 $(this).data('class_value', "new value");
2 голосов
/ 23 августа 2011

$(this).data('class_value','new value') ;

.data

...