我必须在js脚本中获取属性值。 当我使用Jquery方法elem.attr()来检索该值时,我注意到在某些情况下,该方法不起作用。 例如:
<li value="1409079461">
如果我在这个元素上调用$(this).attr(“value”),它会返回正确的值,但是
<li value="100001794127456">
如果我在最后一个元素上调用该方法,该元素具有更多数字的属性,则.attr(“value”)返回0.
有谁知道这种奇怪行为的原因?该方法可以处理的数据量是否有限制?
答案 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认为这是一个字符串。然后你可以删除下划线。