1

我有一个简单的用例,当用户选择特定选项卡时,我更改了 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文件包含在我的应用程序中,但它似乎不起作用。

4

1 回答 1

0

您的代码有一些错误。

  1. if在 CoffeeScript 中的语句上使用大括号是一种语法错误。
  2. if('lastclicked')是没有意义的,一个字符串总是正确的。
  3. $.cookie('lastclicked')返回一个字符串和字符串,您不能将字符串视为 jQuery 对象。

我想你想要更像这样的东西:

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

我也把你换成this@因为@在 CoffeeScript 中更惯用。

于 2012-08-24T04:17:11.050 回答