2010-11-11 76 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 
});