当从IE中的值读取负数时,jquery返回0

时间:2011-02-11 19:15:27

标签: javascript jquery internet-explorer jquery-selectors

我是jQuery的新手,今天偶然发现了一些意想不到的结果。当使用jquery从LI元素中选择值时,如果值为负而不是正确值,则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 个答案:

答案 0 :(得分:2)

不确定原因,但值不是列表项元素的属性。如果您需要自定义值,请使用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 :(得分:1)

你并没有真正使用jQuery来获取价值。我不知道IE为什么会这样,但我会说尝试使用 .attr()原生getAttribute来获取值。

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

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

@Josiah Ruddell注意到.attr()无效。

答案 2 :(得分:0)

编辑:请勿使用'value'使用任何其他属性名称。 查看更新的working example here

即使"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);
});