Jquery .attr (attrname) не всегда работает? - PullRequest
1 голос
/ 19 июня 2011

Я должен получить значение атрибута в сценарии js. Когда я использовал метод Jquery elem.attr () для получения этого значения, я заметил, что в некоторых случаях этот метод не работает. Например:

<li value="1409079461">

Если я вызову $ (this) .attr ("value") для этого элемента, он возвращает правильное значение, но

<li value="100001794127456">

Если я вызову метод для этого последнего элемента, который имеет атрибут с несколькими цифрами, .attr ("value") возвращает 0.

Кто-нибудь знает причину этого странного поведения? Существует ли ограничение на количество данных, которое может обрабатывать метод?

Ответы [ 4 ]

3 голосов
/ 19 июня 2011

значение LI является целым числом, а максимальное целое число составляет 2 147 483 647, все остальное будет 0

2 голосов
/ 19 июня 2011

Я не знал, но я проверил рекомендации W3C и похоже, что <li/> узлы могут иметь атрибут value, который должен быть числом , как описано здесь , но этоотмечен как устарел .Так как другие (@Ivanov и @Digbyswift) упоминали, что он будет преобразован в число.

Я проверил пример кода с помощью jsFiddle, здесь , и он фактически работает в Safari, ноЯ не буду использовать атрибут value, если вам это не нужно.

1 голос
/ 19 июня 2011

jQuery пытается преобразовать значение в целое число, значение слишком велико, и по умолчанию оно равно нулю.

Если вам нужно это значение, то я бы предложил поместить символ подчеркивания в начале, чтобы jQuery считал это строкой. После этого вы можете снять подчеркивание.

1 голос
/ 19 июня 2011

Я не знаю, почему это не работает.

Однако это недопустимый HTML.

Если вы используете атрибуты данных, это будет работать: http://jsfiddle.net/f75LT/

<ul>
    <li data-value="1409079461">Test1</li>
    <li data-value="100001794127456">Test2</li>
</ul>

$(document).ready(function() {
    $('li').click(function() {
        console.log($(this).data('value'));
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...