2010-11-11 73 views
0

我正在使用jquery的.data()函數來緩存document.body對象的一系列值。這個緩存是使用.each()函數動態完成的:jquery - 檢索其標籤包含給定字符串的.data()值

$('foo').each(function(){ 
var bar = $('foo').attr('id'); 
var myVal = $('foo').val(); 
$.data(document.body, 'docDepth-' + bar, myVal);  
}); 

後來我想檢索這組數據對。我的問題是,我不知道如何檢索它們,因爲(a)我不知道有多少數據對將被附加到document.body,(b)我不知道所有可能的標籤將用於數據對。

我需要做的就是查看document.body中存儲的數據對,找到標籤中包含字符串「docDepth」的數據對,然後將它們作爲數組返回。我怎樣才能做到這一點?

回答

0

您可以通過使用var d = $('element').data();

它會返回整個數據對象,然後你就可以遍歷找到你需要的鍵值對獲取存儲在元素上的所有數據。

for (var i in d) 
{ 
    var v = d[i]; 
    console.log('key:', i, 'value:', v); 
} 

http://api.jquery.com/data/

+0

大。正是我需要的。謝謝! – monotasker 2010-11-11 17:44:03

+0

好的,我仍然無法弄清楚如何過濾d的內容,並只選擇鍵值包含字符串的鍵值對。 – monotasker 2010-11-11 18:47:15

0

如果你只是緩存可以這樣做要便宜得多,直接使用自己的對象,像這樣:

var cache = {}; 
$('foo').each(function(){ 
    cache[this.id] = $(this).val(); 
}); 

因爲我們是在一個對象只爲這,不需要前綴開銷。然後遍歷他們以後使用for..in迴路$.each(),像這樣:

$.each(cache, function(key, value) { 
    //use key, value here 
}); 
相關問題