Ответ 1
Вам нужно сделать
$(this).data('class_value', "new value");
Я использую атрибуты данных для управления данными в событиях на стороне клиента. Можно ли динамически присваивать значение атрибуту данных с помощью javascript или jquery?
<li data-class_value="somevalue" class="myclass"></li>
$('.myclass').click(function(){
$(this).data('class_value') = "new value";
});
Вышеупомянутый код javascript вызывает ошибку:
"Неподключить ReferenceError: Недопустимая левая сторона в назначении".
Может ли кто-нибудь рассказать мне, как это может быть достигнуто?
Вам нужно сделать
$(this).data('class_value', "new value");
Я считаю, что приведенные выше ответы только установили объект данных в этот элемент в jQuery.
Если вам нужно установить фактический атрибут data-* HTML, вам нужно будет использовать это:
$(this).attr("data-class_value", "new value");
Остерегайтесь также извлекать атрибуты данных HTML5 *, так как, хотя вы можете использовать ярлык $(this).data("class_value");
для их получения, последующие извлечения будут использовать кешированное значение в объекте данных jQuery.
Из jQuery docs:
Атрибуты данных вытягиваются при первом доступе к свойствам данных, а затем больше не доступны или не изменяются (все значения данных затем сохраняются внутри jQuery).
Источник: jQuery кэширование атрибутов данных
$(this).data('class_value','new value') ;