如何使用js-cookie来记住所选元素

时间:2016-11-12 01:24:51

标签: jquery js-cookie

我希望浏览器能够记住所选元素。这是我第一次使用js-cookie而且我发现文档非常缺乏。我的经验不足也没有帮助,所以我决定在这里寻求帮助。

HTML

   <ul>
      <li class='selected' id='item1'>
        <img src='https://dummyimage.com/100x100/000/fff'/>
      </li>

      <li id='item2'>
        <img src='https://dummyimage.com/100x100/000/fff'/>
      </li>

      <li id='item3'>
        <img src='https://dummyimage.com/100x100/000/fff'/>
      </li>
    </ul>

CSS

ul{margin:0;padding:0}
li{float:left;list-style-type:none}
img{margin-left:5px}
.selected img{border:3px solid red}

脚本

$('li').on('click', function(){
    $(this).siblings().removeClass('selected')
    $(this).addClass('selected');
})

这里是我想要完成的事情的JsFiddle。 https://jsfiddle.net/cb7pf26u/3/

1 个答案:

答案 0 :(得分:0)

对于您希望保留在本地但不需要传递给服务器的数据,最好将其保存在localstorage和cooke中。 cookie被传递回服务器请求,不需要浪费资源。

这里是你的小提琴 - https://jsfiddle.net/denov/cb7pf26u/4/

function setStyle(node) {
    node.siblings().removeClass('selected')
    node.addClass('selected');
}

function startup() {
    var defaultId = 'item1';
        lastId = localStorage.getItem('keep_track_example') || defaultId;            

    $('li').on('click', function(){
        setStyle($(this));
        localStorage.setItem('keep_track_example', $(this).attr('id'));
    })

    setStyle($('#'+lastId));    
}


startup();

如果你真的想使用cookie,你只需要用$.cookie()替换对localstorage的调用