Если у меня есть элемент с
data-something="+5"
и попытаться:
alert($(el).data('something')); //gives 5, not +5...
, как я могу получить исходное значение?
Цитировать руководство jquery относительно извлечения атрибутов данных для доступа с помощью .data () -
Делается каждая попытка преобразовать строку в значение JavaScript (включая логические значения, числа, объекты, массивы и ноль), в противном случае она остается в виде строки. Чтобы получить Атрибут значения в виде строки без какой-либо попытки конвертировать его, используйте метод attr ().
Похоже, ваше +5 интерпретируется как положительное целое число 5.
Похоже, что это дизайн.
https://github.com/jquery/jquery/blob/master/src/data.js#L314
data = data === "true" ? true : data === "false" ? false : data === "null" ? null : !jQuery.isNaN( data ) ? parseFloat( data ) : rbrace.test( data ) ? jQuery.parseJSON( data ) : data;
Это то, что parseFloat, приводя его в число:
parseFloat
parseFloat('+5') == Number(5)
Отhttp://api.jquery.com/data/:
Чтобы извлечь атрибут значения в виде строки без какой-либо попытки его преобразования, используйте метод attr().
attr()