无法在cookie中保存状态

时间:2012-08-24 03:44:58

标签: jquery coffeescript jquery-cookie

我有一个简单的用例,当用户选择特定选项卡时,我会更改li元素的背景颜色。我想要的是即使刷新页面也保持背景颜色的状态。

我一直试图通过jquery cookie https://github.com/carhartl/jquery-cookie来做到这一点,但它似乎不起作用。

我使用cofeescript这样做,这是我的代码: -

 jQuery ->
    $('.left-vertical-menu-elements li a').click ->
        $.cookie('lastclicked', @id)
        $(@).closest('li').addClass('active').siblings().removeClass('active')

        if($.cookie('lastclicked', @id))
            $(@).closest('li'.addClass('active'))
            $.cookie('lastclicked', null)

Html: -

%ul
            %li{:class => "active"}=link_to "Games Playing", "#",:id =>"playing-link "
            %li=link_to "Games Played", "#",:id =>"played-link"
            %li=link_to "Followers", "#",:id =>"followers-link"
            %li=link_to "Following", "#",:id =>"following-link"
            %li=link_to "References", "#",:id =>"refrences-link"
            %li=link_to "Notifications", "#",:id =>"notifications-link"

我已添加alert($.cookie('lastclicked'))以查看Cookie是否存储了最后点击元素的ID,这似乎给出了正确的结果。

我已将jquery.cookie.js文件包含在我的应用程序中,但它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

您的代码有一些错误。

  1. 在CoffeeScript的if语句中使用大括号是语法错误。
  2. if('lastclicked')毫无意义,字符串总是正确的。
  3. $.cookie('lastclicked')返回一个字符串和字符串,你不能像jQuery对象那样处理字符串。
  4. 我想你想要更像这样的东西:

    jQuery ->
        $('.left-vertical-menu-elements li a').click ->
            $.cookie('lastclicked', @id)
            $(@).closest('li').addClass('active').siblings().removeClass('active')
    

    我已将您的this切换为@,因为@在CoffeeScript中更为惯用。