首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery:我如何将所选内容保存在cookie中?

jQuery:我如何将所选内容保存在cookie中?
EN

Stack Overflow用户
提问于 2015-06-29 04:59:44
回答 3查看 959关注 0票数 0

我创建了一个横幅更改器,允许用户根据自己的需要更改横幅,但我希望选择保存在cookie中。我想创建我自己的代码。您可以在这里大致了解代码的功能:http://thoughtscenter.com/test/

当前,如果在打开横幅选择器时选择一个图像,一切都进行得很好,但是当我刷新页面时,图像就会消失,我必须再次选择它来将图像:http://prntscr.com/7mkzi2放在刷新页面:http://prntscr.com/7mkzn4之后。

我的HTML代码(横幅的改变者):

代码语言:javascript
复制
           <div id="banner-picker">
                <ul>
                    <li>
                        <span id="banner-1" style="background-image: url('banner-1.jpg');"></span>
                    </li>
                    <li>
                        <span id="banner-2" style="background-image: url('banner-2.jpg');"></span>
                    </li>
                    <li>
                        <span id="banner-3" style="background-image: url('banner-3.jpg');"></span>
                    </li>
                    <li>
                        <span id="banner-4" style="background-image: url('banner-4.jpg');"></span>
                    </li>
                </ul>
            </div>

旗帜变更者的JavaScript代码:

代码语言:javascript
复制
$(function()
{
    $("#banner-picker-toggle-button").click(function(e)
    {
        $("#banner-picker").slideToggle();
    });
    $("#banner-picker span").click(function(e)
    {
       var banner_id = $(this).attr("id");
       $("#header").removeClass().addClass(banner_id);
    });
});

CSS:

代码语言:javascript
复制
    #banner-picker
    {
        border-bottom: 1px solid #CCCCCC;
        display: none;
        overflow: hidden;
        margin: 0 -20px 20px -20px;
        padding: 0 20px 20px 20px;
    }

    #banner-picker li
    {
        float: left;
        width: 25%;
    }

    #banner-picker span
    {
        height: 130px;
        display: block;
        margin-right: 20px;
        border-radius: 3px;
        box-shadow: inset 0px 1px 10px;
    }

    #banner-picker li:last-child span
    {
        margin-right: 0;
    }

#header.banner-1
{
    background-image: url("banner-1.jpg");
}

#header.banner-2
{
    background-image: url("banner-2.jpg");
}

#header.banner-3
{
    background-image: url("banner-3.jpg");
}

#header.banner-4
{
    background-image: url("banner-4.jpg");
}

这样做的目的是保存用户在下一次访问时通过cookie选择的内容,或者当用户刷新页面时,横幅保持不变。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-29 05:07:33

您可以尝试使用jQuery cookies插件,因为localStorage不能在ie9或更低版本中工作:-

添加此js文件<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.3.1/jquery.cookie.js"></script>

修改你的代码:-

代码语言:javascript
复制
 $("#banner-picker span").click(function(e)
 {
   var banner_id = $(this).attr("id");
   $.cookie('banner',banner_id);
   $("#header").removeClass().addClass(banner_id);
});

并添加以下代码:-

代码语言:javascript
复制
$(function(){
 if(typeof $.cookie('banner')!='undefined')
 {
  $("#header").addClass($.cookie('banner'));
 }
});

UPdated Code:=

代码语言:javascript
复制
$(function () {
  if (typeof $.cookie('banner') != 'undefined') {
     $("#header").addClass($.cookie('banner'));
  }
  $("#banner-picker-toggle-button").click(function (e) {
    $("#banner-picker").slideToggle();
  });
  $("#banner-picker span").click(function (e) {
    var banner_id = $(this).attr("id");
    $.cookie('banner', banner_id);
    $("#header").removeClass().addClass(banner_id);
  });
 });
票数 1
EN

Stack Overflow用户

发布于 2015-06-29 05:06:54

只要看看这段代码,你就可以这样使用了。

代码语言:javascript
复制
$(function()
{
          var bannervalue= localStorage.getItem('banner'); // get banner id from storage
          if(bannervalue==null)
          {
          }
          else
          {
            $("#header").removeClass().addClass(bannervalue);
          }



    $("#banner-picker-toggle-button").click(function(e)
    {
        $("#banner-picker").slideToggle();
    });
    $("#banner-picker span").click(function(e)
    {
       var banner_id = $(this).attr("id");
       $("#header").removeClass().addClass(banner_id);
       localStorage.setItem('banner', banner_id ); // set banner id from storage
    });
});
票数 2
EN

Stack Overflow用户

发布于 2015-06-29 05:09:46

使用document.cookie="key:value"设置一个cookie,其中键(变量名)是键,变量的值是值。

你可以用这个得到一个曲奇:

代码语言:javascript
复制
function getCookie(cname){
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
}

其中cname是cookie的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31108072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档