【问题标题】:Add to favorites/bookmark using HTML5 localStorage and jQuery使用 HTML5 localStorage 和 jQuery 添加到收藏夹/书签
【发布时间】:2016-05-16 11:46:07
【问题描述】:

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

基本上,如果用户想从收藏夹中添加/删除,我会使用引导字形图标来选择它。我做了一些研究,发现 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. 当用户单击“您已选择:”按钮时,它应该删除表格中的当前内容并仅显示收藏的项目(在同一页面上)并带有取消收藏的选项。

这是fiddle,我正在处理。

【问题讨论】:

    标签: javascript jquery css html twitter-bootstrap


    【解决方案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);
    }
    

    参考下面的代码 -

       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
            };
        };
    

    【讨论】:

    • 那么获取数据怎么样?
    • 在页面加载时,检查 localStorage 是否存在,如果存在则获取它并初始化 bookmarkedItems 数组。
    • 你能帮忙解决这个问题吗? stackoverflow.com/questions/37331061/…
    【解决方案2】:

    这是一个关于如何使用本地存储的小例子:

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

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

    编辑: 还有更多关于本地存储功能的扩展示例here

    【讨论】:

    • 我已经放了更多的例子,我会看看你的 JSFiddle 例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多