JQuery .attr和.data方法为同一属性赋予不同的值

时间:2012-07-20 06:29:25

标签: javascript jquery html5

这是我的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"

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

提前致谢...

2 个答案:

答案 0 :(得分:4)

$.fn.data试图了解数字类型并将它们转换为整数。然而,在JavaScript中,整数只是浮点数,因此在接近较大值时会变得不那么精确。我坚持使用attr(),因为它总会返回一个字符串。此处还有一个ticket,但它标有“WONTFIX”。有关JavaScript中大数字限制的详细信息,请参阅this article

答案 1 :(得分: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

Demo 1

Out Put For jquery version 1.8.2

Some text
DATA ATTRIBUTE: 
119697371285186601555 , 
11969737128518660155555

ATTRIBUTE: 
119697371285186601555 , 
11969737128518660155555

Demo 2