Значение данных jQuery с + неправильно получено - PullRequest
1 голос
/ 15 августа 2011

Если у меня есть элемент с

data-something="+5"

и попытаться:

alert($(el).data('something')); //gives 5, not +5...

, как я могу получить исходное значение?

Ответы [ 2 ]

4 голосов
/ 15 августа 2011

Цитировать руководство jquery относительно извлечения атрибутов данных для доступа с помощью .data () -

Делается каждая попытка преобразовать строку в значение JavaScript (включая логические значения, числа, объекты, массивы и ноль), в противном случае она остается в виде строки. Чтобы получить Атрибут значения в виде строки без какой-либо попытки конвертировать его, используйте метод attr ().

Похоже, ваше +5 интерпретируется как положительное целое число 5.

3 голосов
/ 15 августа 2011

Похоже, что это дизайн.

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('+5') == Number(5)

Отhttp://api.jquery.com/data/:

Чтобы извлечь атрибут значения в виде строки без какой-либо попытки его преобразования, используйте метод attr().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...