2011-08-16 22 views
2

在我看來,jQuery的.data()函數更像是一次寫入存儲而不是真正的讀寫存儲。如何更新jQuery的.data()存儲的「複雜」數據?

似乎沒有一種更新複雜值的舒適方式。

假設我們想要在雙鏈表中使用一些元素(不是我的用例,只是說明性的目的)。

這將是容易,如果我會做:

$elem.data('prev', $prev); 
$elem.data('next', $next); 

但我覺得這是不好的做法,污染「全局」 .data()命名空間中的元素。

所以我寧願做:

$elem.data('list', {prev: $prev, next: $next}); 

但我怎麼現在更新prev

在第一個例子,我只想做:

$elem.data('prev', $newPrev); 

但在做事的在我看來,「更好」的方式,我能想到的唯一的事情是這樣的:

$elem.data('list', {prev: $newPrev, next: $elem.data('list').next}); 

這對我來說似乎更加麻煩,我懷疑有更好的辦法,但到目前爲止我找不到任何東西。

我應該怎麼辦?

+0

使用數據('next',..)數據('prev',..)有什麼問題?它是每元素,而不是全球 –

回答

4

當你調用jQuery的數據的方法有一個說法,你到了存儲的對象,你可以使用常規.符號直接更新參考:

$elem.data('list').prev = $newPrev; 

感謝@balpha

+0

第三行是不必要的 – balpha

+0

@balpha:謝謝!更新了我的答案。 –

1

就像這樣:

// method one 
var elemData = $elem.data("list"); 
elemData.prev = "foo"; 

// method two 
$elem.data("list").next = "bar"; 

如果您有螢火蟲,您可以檢查演示在herehere(輸出記錄 安慰)。