javascript - 刷新后不会保持事件状态

标签 javascript jquery html

我需要向链接添加事件类并在导航页面时更改事件状态。我已经尝试过此操作,但在链接之间切换后更改不适用。 (页面重新加载后不起作用)

这是我的代码

$('#shortcuts-main > li').click(function (e) {
    $(".shortcut-link-active").removeClass("shortcut-link-active");
    $(this).addClass("shortcut-link-active");
});
a{
  color:black;
  padding-bottom:15px;
  display:block;
}

.shortcut-link-active a{
  color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="shortcuts-main">
  <li>
    <a href="#">Link 1</a>
  </li>
  <li>
    <a href="#">Link 2</a>
  </li>
  <li>
    <a href="#">Link 3</a>
   </li>
  <li>
    <a href="#">Link 4</a>
  </li>
</ul>

有什么想法吗?

最佳答案

刷新页面后,对 DOM 所做的修改将不会保留。解决这个问题的办法是把数据保存在客户端,重新加载后再读取。

不幸的是localstorage在Stackoverflow上不起作用,但至少你可以看到一些代码:

$('#shortcuts-main > li').click(function(e) {
  $(".shortcut-link-active").removeClass("shortcut-link-active");
  $(this).addClass("shortcut-link-active");
  console.log('id:', $(e.target).data('id'))
  localStorage.setItem('shortcut-link-active', $(e.target).data('id'));
});

const lastActiveLink = localStorage.getItem('shortcut-link-active');
if (lastActiveLink) {
  $('#shortcuts-main')
    .find(`[data-id='${lastActiveLink}']`)
    .parent()
    .addClass('shortcut-link-active')
}
a {
  color: black;
  padding-bottom: 15px;
  display: block;
}

.shortcut-link-active a {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="shortcuts-main">
  <li>
    <a data-id="link-id-1" href="#">Link 1</a>
  </li>
  <li>
    <a data-id="link-id-2" href="#">Link 2</a>
  </li>
  <li>
    <a data-id="link-id-3" href="#">Link 3</a>
  </li>
  <li>
    <a data-id="link-id-4" href="#">Link 4</a>
  </li>
</ul>

关于javascript - 刷新后不会保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53832635/

相关文章:

javascript - 使用 jQuery Mobile 捕获 'pageshow' 上的经纬度坐标

javascript - 使用 jQuery 平滑滚动进行导航会导致奇怪的行为

html - CSS 相对于其父 div 的绝对定位

javascript - 试图设置动态添加输入的焦点

Javascript 无法验证对导入命名空间的计算引用

javascript - NodeJS 分配变量不起作用

javascript - 如何使用动态变量访问嵌套的 JSON 数据

javascript - 通过点击事件获取数据属性

HTML5 视频 - 为用户提供播放速度选项

javascript - 如何使用chartjs在每个条形图上自定义索引标签?