2011-12-31 4 views
4

У меня есть несколько localStorage Ключи, такие как Корзина, Просмотр и Корзина.LocalStorage, Looping через сопоставленные идентификаторы, удаление из DOM

Вопрос состоит в два раза:

1) Каким образом я петля, хотя пункт идентификаторов в LocalStorage в наиболее производительном способе, и если ID уже существует, добавить класс или атрибут данных к элементу соответствия DOM ,

2) Какой был бы лучший способ создать отдельные списки из последних 20 элементов из 3 localStorage Keys (Корзина, Корзина, Просмотрено)? С точки зрения производительности было бы лучше сделать это в той же функции Loop, что и pt1 моего вопроса (например, также проверяет, существует ли идентификатор и добавляет класс, если true)?

Это то, что у меня есть:

HTML

<article data-id="548" data-date="Mon Dec 19 09:12:57"> <h1><a href="#">Title</a></h1> // section // footer <a href="#" data-context="trash">trash</a> </article>

JQuery

$tools.on("click", "a", function(e){ 
     var storeId = $(this).attr('data-context');   
     var selector = $(this).closest('article'); 
     var dataId = selector.attr('data-id'); 
     var pubDate = selector.attr('data-date'); 
     var postUrl = selector.find('a', 'h1').attr('href'); 
     var postTitle = selector.find('h1').text(); 
     var $removable = $container.find(selector); 
     setLocalStorage(storeId, dataId, postUrl, postTitle, pubDate); 
     if (storeId == "Trash") { 
        $container.isotope('remove', $removable); 
     }; 
     e.preventDefault(); 
    }); 

сеттер функция.

Переменные передаются через data-context="Trash" (ключ) и data-id="001" (id) и сохраняются в соответствующем ключе.

function setLocalStorage(itemKey, dataId, postUrl, postTitle, postPub) { 
     var ItemKey = itemKey; 
     var timeStamp = new Date(); 
     var json = JSON.parse(localStorage.getItem(ItemKey)); 
     if(json == null) 
     json = []; 
     json.push({id:dataId,title:postTitle,url:postUrl,postPub:postPub,dataTimeStamp:timeStamp}); 
     // save the result array 
     sessionStorage.setItem(ItemKey, JSON.stringify(json)) 

     // Notify user item added to Cart 
     updateNotifications(ItemKey, json); 
    } 

LocalStorage заканчивается так: Trash [{"id":"418","title":"\n\t\t\t\t\t\t\t\t\tPost Title....//..."}]

Любая помощь здесь будет очень высоко ценится.

С Новым годом!

Приветствия Бен

ответ

0

хранить один объект в ключе. Затем работайте над объектом после его разбора.

var mysite = $.parseJSON(localStorage['mysite']); 

Вы можете хранить все состояния в массиве идентификаторов вектора (например

{ 
    cart:[idA,idB], 
    viewed:[idZ,idX], 
    trashed:[id1,id2] 
} 

Затем измените состояние и аннулирует объекты, представляющие государственные ценности. Я не уверен, что вы пытаетесь достичь , но, возможно, просмотренные предметы перемещаются в div, который находится ниже складок, корзины и элементы корзины перемещаются в репсивные скрытые divs, а соответствующие значки обновляются с соответствующими подсчетами и т. д.

Если эти предметы сохранены в вашей БД, но не генерировать на каждой странице вы можете ajax запросить данные элемента для данного идентификатора и сгенерировать свои состояния из объектов, которые были получены, когда они вам понадобятся.

Возможно, вы хотите, чтобы все эти данные хранились локально, потому что он не хранился в db где-то, более подробная информация может быть полезна.

 Смежные вопросы

  • Нет связанных вопросов^_^