2011-06-19 9 views
1

jsスクリプトで属性値を取得する必要があります。 私はJqueryメソッドelem.attr()を使ってその値を取得していましたが、場合によってはそのメソッドが機能しないことに気付きました。たとえば :私はこの上でメソッドを呼び出す場合、私は、この要素の上に(この).ATTR( "値")$を呼び出すとJquery .attr(attrname)は必ずしも機能しませんか?

<li value="1409079461"> 

、それが正しい値を返しますが、

<li value="100001794127456"> 

.attr( "value")は0を返します。

この奇妙な動作の原因を知っている人はいますか?メソッドが処理できるデータ量に制限はありますか?

+0

Chrome 12、OS Xでこれを再現することはできません。おそらくブラウザ固有の問題ですか? – Betamos

答えて

1

なぜ動作しないのかわかりません。

ただし、有効なHTMLではありません。

あなたがデータを使用している場合、それは動作します属性:LIhttp://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')); 
    }); 
}); 
+0

jQueryが属性を取得するために有効なHTMLである必要はありません。また、データサフィックスはHTML5固有のものですが、どこに行くのか分かります。 – Digbyswift

+0

@Digbyswift。それはなぜ私はそれが動作しないのか分からないと言ったことです。 – PeeHaa

3

値は整数で、最大の整数は2147483647で、他のすべてはjQueryのに値を変換しようとしている0

+1

@K Ivanov:Nice one +1 – PeeHaa

+1

「value属性は廃止されましたが、引き続きすべての主要ブラウザでサポートされています。」、今後の検討事項 –

1

になります整数であり、値が大きすぎ、デフォルト値はゼロです。

この値が必要な場合は、冒頭にアンダースコアを挿入してjQueryにこれを文字列と見なすようにしてください。後でアンダースコアを取り除くことができます。

2

私は知りませんでしたが、私は、W3C勧告にチェックしhere記載されているようnumberあるべきvalue属性を持つことができ<li/>ノードのように思えるが、を非推奨としてマークされます。だから他の人たち(@イワノフと@ディビーズウィフト)が言いましたように、それは数字に変換されます。

jsFiddle、hereでサンプルコードを確認しましたが、実際にはSafariで動作していますが、実際には必要ない場合はvalue属性を使用しません。

関連する問題