jquery - 页面刷新后保持类切换

标签 jquery html css

我目前正在使用 CSS、HTML 和 JQuery 制作滑动按钮。我对 JQuery 有基本的了解,但对 CSS 和 HTML 也很了解。不过,我遇到了一个小问题,每当您按下按钮时它都可以正常工作,但是在页面重新加载时它会恢复到切换之前的状态。我如何解决这个问题,向任何解决方案(最好是客户端)开放? (下面是我的按钮的片段及其旁边的代码)

$(document).ready(function() {
  $('.toggle-menu-lang-cont').click(function() {
    $('.handle').toggleClass('slide');
    $('.toggle-menu-lang-cont').toggleClass('color-swap');
  });
});
body {
  background-color: black;
}

.toggle-menu-lang-cont {
  position: absolute;
  top: 2.5vw;
  right: 5vw;
  max-width: 3.5vw;
  width: 3.5vw;
  max-height: 1.5vw;
  height: 1.5vw;
  border-radius: 1vw;
  z-index: 5;
  background-color: #fff;
  transition: all 1s;
  transform: scale(1);
}

.handle {
  position: absolute;
  top: 0.15vw;
  right: .25vw;
  background-color: #0282E4;
  width: 1.25vw;
  height: 1.25vw;
  border-radius: 100%;
  filter: drop-shadow(0vw .15vw .15vw rgb(0, 0, 0, 0.6));
  transition: all 1s;
  transform: scale(1);
}

.slide {
  position: absolute;
  right: 2vw;
  background-color: white;
  transition: all 1s;
}

.color-swap {
  background-color: #0282E4;
  transition: all 1s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <title>Code Project</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" type="text/css" href="stylesheet.css" <script src="http://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E=" crossorigin="anonymous">
  </script>
</head>

<body>
  <section class="toggle-menu-lang-cont">
    <div class="toggle-btn"></div>
    <div class="handle"></div>
  </section>
</body>

</html>

最佳答案

基本思想是在切换时利用LocalStorage。然后将交换机的当前状态存储到存储器中。当页面加载时,您检查存储键和存储值是否存在。如果该值为 true(开关处于事件状态),请进行适当的调整,以便正确的类就位。如果开关未激活,则不执行任何操作。

$(document).ready(function() {
  function toggleHandle() {
    $('.handle').toggleClass('slide');
  }

  if (localStorage.getItem('switch-state') && localStorage.getItem('switch-state') === "true") {
    $('.toggle-menu-lang-cont').addClass('color-swap');
    toggleHandle(); 
  }

  $('.toggle-menu-lang-cont').click(function() {
    let el = $('.toggle-menu-lang-cont');
    toggleHandle();
    el.toggleClass('color-swap');
    localStorage.setItem('switch-state', el.hasClass('color-swap'));
  });
});

工作示例

jsFiddle

关于jquery - 页面刷新后保持类切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55819969/

相关文章:

php - 返回数据库中插入的 n 行

javascript - Div 不包含在单元格中

css - CSS 过渡和 CSS 动画的用例

javascript - 如果用户不执行任何事件,如何通过 jquery 显示 div

javascript - 可靠地获取隐藏元素的高度

php - 从mysql生成统计信息

html - 更改文本区域中的行高会导致 IE9 和 IE10 中出现垂直滚动条

jQuery/ajax 当前导航状态点击

jquery - 使用 jquery 将一个表列移动到一个新表

php - 关于如何使用 php 和 jQuery 创建测验的提示和建议