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

时间:2010-11-11 17:35:43

标签: 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)我不知道将有多少数据对附加到document.body,以及(b)我不知道所有可能的标签将用于数据对。

我需要做的是查看document.body上存储的数据对,找到那些标签包含字符串“docDepth”的数据对,然后将它们作为数组返回。我怎么能这样做?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

如果您只是缓存,那么您可以直接使用自己的对象来降低成本,例如:

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

因为我们只是为了这个对象,所以不需要前缀开销。然后为了迭代它们,请使用$.each() for..in循环,如下所示:

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