Ответ 1
this.getAttribute('data-value')
В моем исходном HTML есть следующее:
<li><a href="#" data-value="01">Test</a></li>
Я хочу получить значение атрибута data, поэтому я использую следующее:
var abc = $(this).data('value');
Это работает нормально, но если нет начального нуля. Например, приведенное выше поместил значение "1" в abc.
Есть ли способ, которым я могу заставить его не преобразовывать "01" в "1"?
this.getAttribute('data-value')
Вы можете использовать оператор attr() для jQuery:
var abc = $(this).attr('data-value');
Из документации jQuery data(), кажется, что вы должны использовать .attr(), чтобы предотвратить автоматическое преобразование типов:
Производится попытка преобразования строки в значение JavaScript (это включает в себя логические значения, числа, объекты, массивы и нуль), в противном случае она остается в виде строки. Чтобы получить атрибут value как строку без какой-либо попытки его преобразования, используйте метод attr(). Когда атрибут data является объектом (начинается с '{') или массива (начинается с '['), тогда jQuery.parseJSON используется для синтаксического анализа строки; он должен следовать действующему синтаксису JSON, включая цитируемые имена свойств. Атрибуты данных вытаскиваются при первом доступе к свойствам данных, а затем больше не доступны или не изменяются (все значения данных затем сохраняются внутри jQuery).
Итак, чтобы не дублировать другие ответы, а чтобы укрепить, способ доступа к атрибуту без преобразования типов:
var abc = $(this).attr('data-value');
$(this).attr('data-value');
Это вернет строковое значение с ведущим 0.
Вы пробовали?:
$(this).attr('data-value');
или
$(this).attr('data-value').toString();
Попробуйте:
this.data('value');
Я думаю, что это лучший способ получить значение атрибута данных.