4

这是我的html代码

<li class="current" title="some title" data-atype="some type" data-aid="119697371285186601">
  Some text
</li>

这是我从 firebug / google chrome 调试器控制台得到的,

>> $().jquery
"1.7.2"
>> ($('li.current:first')).data('aid')
119697371285186610
>> ($('li.current:first')).attr('data-aid')
"119697371285186601"

我搜索了该问题,但找不到该问题的确切原因和解决方案。如果有人可以帮助我找到解决方案和问题的原因,那将非常有帮助。

提前致谢...

4

2 回答 2

4

$.fn.data尝试对数字类型进行智能处理并将它们转换为整数。然而,在 JavaScript 中,整数只不过是浮点数,因此当它们接近较大的值时变得不那么精确。我会坚持,attr()因为它总是会返回一个字符串。这也有一张票,但上面标有“WONTFIX”。有关 JavaScript 中大数限制的更多信息,请参阅这篇文章

于 2012-07-20T06:35:29.167 回答
1
<ul>
   <li class="current" title="some title" data-atype="some type" data-rrr="11969737128518660155555">
  Some text
   </li>
</ul>
<span></span>


$(document).ready(function(){
    $('span').html('DATA ATTRIBUTE: '+$('li.current:first').data('rrr')+ '   <br />   ATTRIBUTE: '+     $('li.current:first').attr('data-rrr'));
});

Output / result:  

    Some text        
    DATA ATTRIBUTE: 1.1969737128518661e+22
    ATTRIBUTE: 11969737128518660155555

http://jsfiddle.net/nanoquantumtech/usydd/#base

//================================================= ========//

  <ul>
    <li class="current" title="some title" data-atype="some type" data-test1="119697371285186601555" data-test2="11969737128518660155555">Some text
    </li>
</ul>
<span></span>


$(document).ready(function() {
    $('span').html('DATA ATTRIBUTE: <br />' + $('li.current:first').data('test1')+  ' , <br /> '+$('li.current:first').data('test2') + '<br /><br /> ATTRIBUTE: <br />' + $('li.current:first').attr('data-test1')+' , <br />'+$('li.current:first').attr('data-test2'));
});​


Out Put For jquery version < 1.7.2

Some text
DATA ATTRIBUTE: 
119697371285186610000 , 
1.1969737128518661e+22

ATTRIBUTE: 
119697371285186601555 , 
11969737128518660155555

演示 1

Out Put For jquery version 1.8.2

Some text
DATA ATTRIBUTE: 
119697371285186601555 , 
11969737128518660155555

ATTRIBUTE: 
119697371285186601555 , 
11969737128518660155555

演示 2

于 2012-07-20T06:56:57.450 回答