jquery - получение значений .data (), метка которых содержит данную строку - PullRequest
0 голосов
/ 11 ноября 2010

Я использую функцию jdery .data () для кэширования ряда значений в объекте document.body.Это кэширование выполняется динамически с использованием функции .each ():

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

Позже я хочу получить этот набор пар данных.Моя проблема, однако, в том, что я не знаю, как их получить, поскольку (а) я не знаю, сколько пар данных будет прикреплено к document.body, и (б) я не знаю, какие все возможныеметки будут для пар данных.

Что мне нужно сделать, это просмотреть сохраненные пары данных в document.body, найти те, чья метка содержит строку «docDepth», а затем вернуть их в виде массива.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2010

Если вы просто кешируете, вы можете сделать это намного дешевле, используя собственный объект напрямую, например:

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

Так как мы находимся в объекте только для этого, нет необходимости в префиксных издержках,Затем, чтобы повторить их позже, используйте цикл for..in для $.each(), например:

$.each(cache, function(key, value) {
  //use key, value here
});
0 голосов
/ 11 ноября 2010

Вы можете получить все данные, хранящиеся в элементе, используя var d = $('element').data();

. Он вернет весь объект данных, который затем можно будет перебрать, чтобы найти нужные пары ключей и значений.

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

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

...