2011-06-19 311 views
1

我必須在js腳本中獲取屬性值。 雖然我使用Jquery方法elem.attr()來檢索該值,但我發現在某些情況下,該方法不起作用。 例如:Jquery .attr(attrname)並不總是工作?

<li value="1409079461"> 

如果我調用$(本).attr( 「值」)這個元素,它返回正確的值,但

<li value="100001794127456"> 

如果我調用該方法在這最後一個元素,具有更多數字的屬性,.attr(「value」)返回0.

有沒有人知道這種奇怪行爲的原因?該方法可以處理的數據量是否有限制?

+0

我可以**不** **在Chrome 12,OS X上重現此問題。可能是瀏覽器特定的問題? – Betamos

回答

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')); 
    }); 
}); 
+0

它不需要是jQuery有效的HTML來獲取屬性。另外,數據後綴是HTML5特有的,但我明白你要去哪裏。 – Digbyswift

+0

@Digbyswift。那就是我所說的「我不知道爲什麼它不起作用」。 – PeeHaa

3

LI值爲整數,最大整數爲2,147,483,647,其他的一切都會0

+1

@K Ivanov:很好的+1 – PeeHaa

+1

也「價值屬性已被棄用,但仍支持所有主流瀏覽器。」,有些事情要考慮未來 –

1

jQuery是試圖將值轉換爲一個整數,它的值太大,它默認爲零。

如果你需要這個值,那麼我會建議在開始處放置一個下劃線字符,以強制jQuery考慮這個字符串。之後您可以剝下下劃線。

2

我不知道,但我在W3​​C建議檢查,好像<li/>節點可以有value屬性,它應該是一個number描述here,但它被標記爲棄用。正如其他人(@Ivanov和@Digbyswift)所提到的那樣,它將被轉換爲一個數字。

我用jsFiddle檢查了一個示例代碼,here它實際上在Safari中工作,但如果您不需要,我不會使用value屬性。