0

我正在使用 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”的数据对,然后将它们作为数组返回。我怎样才能做到这一点?

4

2 回答 2

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/

于 2010-11-11T17:39:29.243 回答
0

如果您只是缓存,则可以直接使用自己的对象做很多便宜的事情,如下所示:

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

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

$.each(cache, function(key, value) {
  //use key, value here
});
于 2010-11-11T17:49:54.423 回答