我有一个简单的用例,当用户选择特定选项卡时,我会更改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
文件包含在我的应用程序中,但它似乎不起作用。
答案 0 :(得分:0)
您的代码有一些错误。
if
语句中使用大括号是语法错误。if('lastclicked')
毫无意义,字符串总是正确的。$.cookie('lastclicked')
返回一个字符串和字符串,你不能像jQuery对象那样处理字符串。我想你想要更像这样的东西:
jQuery ->
$('.left-vertical-menu-elements li a').click ->
$.cookie('lastclicked', @id)
$(@).closest('li').addClass('active').siblings().removeClass('active')
我已将您的this
切换为@
,因为@
在CoffeeScript中更为惯用。