Jquery .attr(attrname)并不总是有用吗?

时间:2011-06-19 17:50:34

标签: java jquery html dom

我必须在js脚本中获取属性值。 当我使用Jquery方法elem.attr()来检索该值时,我注意到在某些情况下,该方法不起作用。 例如:

<li value="1409079461">

如果我在这个元素上调用$(this).attr(“value”),它会返回正确的值,但是

<li value="100001794127456">

如果我在最后一个元素上调用该方法,该元素具有更多数字的属性,则.attr(“value”)返回0.

有谁知道这种奇怪行为的原因?该方法可以处理的数据量是否有限制?

4 个答案:

答案 0 :(得分:3)

LI的值是整数,最大整数是2,147,483,647,其他一切都是0

答案 1 :(得分:2)

我不知道,但我检查了W3C建议,似乎<li/>个节点可以value属性number,如here所述,但它是value标记为已弃用。所以其他人(@Ivanov和@Digbyswift)提到它将被转换为数字。

我已经使用jsFiddle here检查了一个示例代码,它实际上在Safari中工作,但如果您不需要,我将不会使用{{1}}属性。

答案 2 :(得分:1)

我不知道为什么它不起作用。

但它不是有效的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'));
    });
});

答案 3 :(得分:1)

jQuery正试图将该值转换为整数,该值太大而且默认为零。

如果你需要这个值,那么我建议在开头放置一个下划线字符,以强制jQuery认为这是一个字符串。然后你可以删除下划线。