JQuery возвращает 0 при чтении отрицательного значения в IE - PullRequest
0 голосов
/ 11 февраля 2011

Я новичок в jQuery и наткнулся на некоторые неожиданные результаты сегодня.При выборе значения из элемента LI с помощью jquery, IE вернет 0, если значение отрицательное вместо правильного значенияВ Chrome приведенный ниже код выдаст предупреждение с -1, но в IE он говорит 0. Есть мысли?

<html>
    <head>    
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>  
    </head>
    <body>
    <script>
        $(function () {
            $(".ui-selected", this).each(function () {
                alert(this.value);      
            });
        });
   </script>

    <ol>
        <li class="ui-selected" value="-1" />
    </ol>

    </body>
</html>

Ответы [ 3 ]

2 голосов
/ 11 февраля 2011

Не уверен насчет причины, однако значение не является атрибутом элементов элемента списка. Если вам нужно пользовательское значение, используйте атрибут data-value (или другой).

См. Этот пример для получения дополнительной информации jsfiddle

<ul>
    <li value="-1" data-value="-1"></li>
</ul>

$('li').each(function(){
    alert(this.value); // 0
    alert($(this).attr('data-value')); // -1
})
1 голос
/ 11 февраля 2011

Вы не используете jQuery для получения значения.Я не знаю, почему IE ведет себя так, но я бы сказал, попробуйте, используя .attr(), или нативный getAttribute, чтобы получить значение.

alert( $(this).attr('value') );

alert( this.getAttribute('value') );

@ Джозия Радделл отметил, что .attr() не работает.

0 голосов
/ 11 февраля 2011

РЕДАКТИРОВАТЬ: не используйте «значение» используйте любое другое имя атрибута. Смотрите обновленный рабочий пример здесь

Даже если "value" не является допустимым атрибутом HTML, jQuery не распознает это и его селекторы атрибутов работают просто отлично.

Недопустимого селектора не существует. Он либо возвращает что-то, либо нет.

<ul>
    <li  class="ui-selected" myVar="-1" >
        Hi
    </li>
</ul>



$(".ui-selected").each(function(){
    var liValue =  $(this).attr('myVar');
    var intVal = parseInt(liValue); 
    // Just to be safe you've retrieved only an integer!

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