5

以下は、警告ボックスの読み取りをスローします: 211466719468855300. 文字列にキャストしようとしても、なぜこれが起こるのですか? どうしたら正確に読めますか?

HTML:

<a class="delete-link" data-id="211466719468855298">Delete</a>​

JS:

$('.delete-link').click(function(e) {
        var $item =$(this);
        var itemID = String($item.data('id'));
        alert(itemID);
});

フィドル: http://jsfiddle.net/zUbym/1/

</p>

4

1 に答える 1

8

これは、次の 2 つの理由で発生します。

  1. jQueryは、「data-」属性値を「適切な」型に変換することを支持しますか
  2. すべての数値は 64 ビットの IEEE 794 浮動小数点値であるため、これほど大きな数値を JavaScript で正確に表現することはできません。

".attr()" で属性値を直接取得すると、数値変換を回避できますが、文字列のままにしておく必要があります。または、データ値の前に数字以外の文字 (「_」など) を付けて、jQuery が有利に働かないようにすることもできます。

于 2012-06-09T15:53:15.273 に答える