使用HTML5 localStorage和jQuery

时间:2016-05-16 11:46:07

标签: javascript jquery css html5 twitter-bootstrap

我想在我的一个项目中添加“添加到收藏夹/书签”功能,但对于相同的内容我完全是空白。

基本上,我正在使用bootstrap glyphicons供用户选择,如果他想从收藏夹中添加/删除。我做了一些研究,发现html5 localStorage概念合适,但无法真正弄清楚它对我的项目的确切工作。如果这里有人可以指导我,那将是一个很大的帮助。

这是html:

<h1>test</h1>
<table class="'basic">

    <tr>
        <td><div class="glyphicon glyphicon-star-empty icon bkmark_icon"> </div></td>
        <td>A</td>
    </tr>
     <tr>
        <td><div class="glyphicon glyphicon-star-empty icon bkmark_icon"> </div></td>
        <td>B</td>
    </tr>
     <tr>
        <td><div class="glyphicon glyphicon-star-empty icon bkmark_icon"> </div></td>
        <td>C</td>
    </tr>
</table>

<br><button class="btn">You have selected:</button>

因为我真的不知道jQuery中localStorage的实现,还没有添加它,但这就是js文件现在所拥有的:

$(function() {

   $(document).on('click', '.bkmark_icon', function(){

       $(this).toggleClass('glyphicon-star-empty glyphicon-star');
   // localStorage.setItem('display', $(this).is(':visible'));

   });

   $(document).on('click', '.btn', function(){
       var bkmark_item = '<table><tr><td><div class="glyphicon glyphicon-star icon bkmark_icon"></div></td><td>*selected*</td></tr></table>';
       $(bkmark_item).insertAfter('h1');

   });

});

我搜索了它,发现这个堆栈溢出answer是合适的。

我需要什么?

  1. 当用户点击glyphicon-star-empty时,它应切换到glyphicon-star,相关项目应添加到localStorage(即收藏夹)。
  2. 当用户点击“您已选择:”按钮时,它应该删除表格中的当前内容并仅显示收藏的项目(在同一页面上),并提供取消收藏的选项。
  3. 这是我正在努力的fiddle

2 个答案:

答案 0 :(得分:1)

尝试创建JavaScript对象并将其序列化以将其保存在localStorage中。使用这样的东西 -

var bookmarkedItems = [];
function ItemObject(name, content)
{
   this.name = name;
   this.content = content;
}

function addItem()
{
  bookmarkedItems.push(new ItemObject('Item1', 'Content1'));
}

function saveToLocalStorage(item)
{
  var ob = localStorage.get('KEY');
  if(ob)
  {
     bookmarkedItems = JSON.parse(ob);
  }
  bookmarkedItems.push(item);
  localStorage.set('KEY', JSON.stringify(bookmarkedItems);
}

OR

参考下面的代码 -

   var storageService = function () {

        var STORAGE_KEY = "bookmarkitems";
        var bookmarkitems = {};

        var init = function () {
            bookmarkitems = sessionStorage.getItem(STORAGE_KEY);
            if (bookmarkitems) {
                bookmarkitems = JSON.parse(bookmarkitems);
            }
            else {
                bookmarkitems = {};
            }
        };

        var set = function (key, value) {
            bookmarkitems[key] = value;
            updateStorage();

        };

        var get = function (key) {
            return bookmarkitems[key];
        };

        var updateStorage = function () {
            sessionStorage.setItem(STORAGE_KEY, JSON.stringify(bookmarkitems));
        };

        return {
            init: init,
            set: set,
            get: get,
            updateStorage: updateStorage
        };
    };

答案 1 :(得分:0)

以下是有关如何使用本地存储的一个小示例:

// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");

您可以参考this page了解更多示例。 使用它非常简单,就像任何JS对象一样。

修改 有关本地存储here功能的更多扩展示例。