2013-05-02 85 views
1

假設你有這樣的:如何將值從元素中推送到jQuery數據()對象?

<a href="#" data-mydata="{'key':[value1, value2, value3]}">LINK</a> 

而且在某個地方,當你正在閱讀/檢查要推動更多的值可以根據這些數據的javascript「的關鍵。」

這顯然是行不通的:

var mykey = $('a').data('mydata').key; 
$('a').data('mydata', mykey.push('value4')); 

這不起作用或者:

var mykey = $('a').data('mydata').key; 
$('a').data('mydata.key', mykey.push('value4')); 

我還沒有發現這個工作可以:

var mykey = $('a').data('mydata').key; 
$('a').data('mydata', '{"key":'+mykey.push('value4')+'}'); 

我必須在這裏失去一些東西。

+0

'mykey.push('value4')'返回數組項的數字,而不是一個值或值 – WooCaSh 2013-05-02 18:15:56

回答

1

只需更新mykey直接:

var mykey = $('a').data('mydata').key; 
mykey.push('value4'); 
console.log(mykey); //     ["value1", "value2", "value3", "value4"] 
console.log($('a').data('mydata').key)// ["value1", "value2", "value3", "value4"] 

http://jsfiddle.net/ewDaB/

注:我定你的數據屬性有有效的JSON,這樣的jQuery能夠正確解析它作爲一個對象。也用引號將值包裹起來。

+0

我不知道爲什麼我以前無法使用它。我也嘗試了這一點,並且我忘記了[]中的引號,並在我的代碼中加入了它們。此外,如果值是數字,則不必將值包含在引號中,但示例代碼與我的猜測不清楚。 – Tomas 2013-05-02 19:03:29

+0

正確,只要它是有效的JSON它是好的,我認爲你有有效的JSON,這就是爲什麼我提到它作爲一個筆記,而不是實際的答案的一部分。 – 2013-05-02 19:06:05

0

Eval的作品,但認爲危險,因爲gdoron提到。在jQuery數據中設置對象的方法是隻設置它們而不用自己序列化它們。所以,最好的辦法就是要做到這一點:

values = $('a').data('mydata').key; 
values.push('value4') 
$('a').data('mydata', {'key': values}); 

但是,這意味着你不應該設置在html元素的數據MYDATA的屬性,方法,而應該用jQuery動態設置:

$('a').data('mydata', {'key': [value1, value2, value3] }); 

你可以在頁面加載時調用它以初始化元素上的數據。 jQuery將負責序列化數據並保存它。

0

也許這將是工作:

var mykey = $('a').data('mydata').key; 
mykey.push('value4'); 
$('a').data('mydata', mykey); 

我不知道最後一行,但您可以用三個例子在這裏嘗試。但是使用array而不是arra.push作爲值。

相關問題