Javascript jquery-检索其标签包含给定字符串的.data()值

Javascript jquery-检索其标签包含给定字符串的.data()值,javascript,jquery,data-caching,Javascript,Jquery,Data Caching,我正在使用jquery的.data()函数缓存document.body对象上的一系列值。此缓存是使用.each()函数动态完成的: $('foo').each(function(){ var bar = $('foo').attr('id'); var myVal = $('foo').val(); $.data(document.body, 'docDepth-' + bar, myVal); }); 稍后我想检索这组数据对。但是,我的问题是,我不知道如何检索它们,因为(a)

我正在使用jquery的.data()函数缓存document.body对象上的一系列值。此缓存是使用.each()函数动态完成的:

$('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”的数据对,然后将它们作为数组返回。我该怎么做呢?

您可以使用
var d=$('element').data()获取存储在元素上的所有数据

它将返回整个数据对象,然后您可以对其进行迭代以找到所需的键值对

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

如果只是缓存,那么直接使用自己的对象可以节省很多成本,如下所示:

var cache = {};
$('foo').each(function(){
  cache[this.id] = $(this).val();
});
$.each(cache, function(key, value) {
  //use key, value here
});
因为我们在一个对象中只是为了这个,所以不需要前缀开销。然后,要在以后对其进行迭代,请在
循环中使用for..for,如下所示:

var cache = {};
$('foo').each(function(){
  cache[this.id] = $(this).val();
});
$.each(cache, function(key, value) {
  //use key, value here
});

伟大的正是我需要的。谢谢好的,我仍然不知道如何过滤d的内容,并且只选择键包含字符串的键值对。