2012-09-15 57 views
1

如何將HTML屬性值用作$.param的JQuery對象?HTML數據屬性值jQuery對象

<div data-sd="{a:1,b:1,c:2}"></div> 

當我嘗試這個時,我得到了奇怪的結果。

<script type="text/javascript"> 
var v = $.param($('div').data('sd')); 
</script> 
+0

你能解釋'奇怪的結果'和你期待什麼嗎? – dSquared

+0

@dSquared:由於'data-sd'不是一個格式正確的JSON對象,所以'$ .param'實際上會嘗試*轉換字符串'「{a:1,b:1,c:2}'' ,產生'0 =%7B&1 = a&2 =%3A&3 = 1&4 =%2C&5 = b&6 =%3A&7 = 1&8 =%2C&9 = c&10 =%3A&11 = 2&12 =%7D''而不是'a = 1&b = 1&c = 2' –

回答

4

雙引號包裝你的對象的屬性名稱,纔能有合式JSON

<div data-sd='{"a":1,"b":1,"c":2}'></div>​​​​​​​​​​​​​​​​​​​ 

然後,$.param將返回a=1&b=1&c=2,符合市場預期。 DEMO

HTML5 data-* Attributes

當數據屬性是一個對象(與 '{' 開頭)或陣列 然後jQuery.parseJSON用於解析(以 '[' 開頭)串; 它必須遵循有效的JSON語法,包括引用的屬性名稱

+0

是正確的。我想我的大腦融化了。謝謝! – tuze