javascript - 在浏览器上存储一个 css 类

标签 javascript jquery html css

我的元素可以选择通过单击链接来更改网站主题:

<ul>
  <li class="=contact"><a href="#">Contact</a></li>
  <li class="facebook"><a href="#">Facebook</a></li>
  <li class="twitter"><a href="#">Twitter</a></li>
  <li class="rss"><a href="#">Feed Rss</a></li>
  <li class="change-theme"><a href="#">Change Theme</a></li>
</ul>

当点击 <li class="change-theme"> 内的链接时它触发脚本:

$('.change-theme').click(function () {
  $('body').toggleClass('theme-dark');
});

它是添加类 theme-dark , 改变网站主题。但是当用户刷新页面时,默认主题又回来了。 有一种方法可以存储所选主题并在浏览器更新时使用它吗?

最佳答案

Localstorage 将为您提供存储没有过期日期的数据的可能性:

$('.change-theme').click(function () {
    $('body').toggleClass('theme-dark');
    if($('body').hasClass('theme-dark')){
        localStorage.setItem('theme', 'theme-dark');
    }
});

$(document).ready(function(){
    var theme = localStorage.getItem('theme');  
    if(theme !== ''){      
        $('body').addClass(theme);
    }
});

sessionStorage 将只存储一个 session 的数据,直到浏览器关闭(用法与 localStorage 相同)。

所有主要浏览器都支持此功能,Internet Explorer 从版本 8 开始支持此功能。

注意:您只能在 Webstorage 中存储字符串。

如果您想改用 cookie,您可以尝试:

document.cookie="theme=theme-dark"; //setter

var x = document.cookie; //getter

引用

webStorage

cookies

关于javascript - 在浏览器上存储一个 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239337/

相关文章:

html - 如何扩展 Elixir phoenixframework html 表单助手

html - 如何轻松地在图像中间制作文字标题

html - 如何在 2 列或更多列中显示 Ruby ActiveAdmin attributes_table 行?

javascript - 哪种做法最适合在 angular.js 中保存状态和模型

Javascript 自定义对象 - IE 中的预期标识符

jquery on.click 在第一次单击时不起作用(使用动态元素)

javascript - jquery 选择所有不包含特定文本的行

javascript - 如何从数组中的今天日期获取过去六个月的时间并在 JavaScript 中返回该数组

javascript - 如何跟踪 React 钩子(Hook)?

php - 使用PHP从相对路径查找图像的绝对路径