jquery - получение значений.data(), метка которых содержит данную строку
Я использую функцию jquery.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 ответа
Если вы просто кешируете, вы можете сделать это намного дешевле, используя собственный объект напрямую, например так:
var cache = {};
$('foo').each(function(){
cache[this.id] = $(this).val();
});
Поскольку мы находимся в объекте только для этого, нет необходимости в префиксе издержек. Затем, чтобы перебрать их позже, используйте for..in
цикл для $.each()
, как это:
$.each(cache, function(key, value) {
//use key, value here
});
Вы можете получить все данные, хранящиеся на элементе, используя var d = $('element').data();
Он вернет весь объект данных, который затем можно будет перебрать, чтобы найти нужные пары ключей и значений.
for (var i in d)
{
var v = d[i];
console.log('key:', i, 'value:', v);
}