You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面刷新后如何使用jQuery保持更新后的innerHTML不被重置

问题排查

你原来的代码存在3个核心问题:

  1. 存储激活项时,jQuery(".woocommerce-MyAccount-navigation-link").attr("class")取的是页面第一个导航项的类名,不是你当前点击的li的类名,存储的内容本身就错误
  2. 页面加载完成后没有读取localStorage的存储值来初始化.js-link的文本,所以刷新后自然会恢复成默认值
  3. 点击li的逻辑写反了:你是先判断当前li的类名和存储值一致才更新文本,但实际点击时应该先存当前点击的项,再更新显示内容

实现代码

你原来的HTML结构不需要修改,直接替换JS代码即可:

jQuery(function() {
  var list = jQuery('.js-dropdown-list');
  var link = jQuery('.js-link');
  var icon = '<i class="fa fa-chevron-down"></i>';

  // 页面初始化时读取localStorage,更新导航显示文本
  var activeLiClass = localStorage.getItem("Activeli");
  if (activeLiClass) {
    var activeLi = list.find('li.' + activeLiClass.replace(/ /g, '.'));
    if (activeLi.length) {
      link.html(activeLi.find('a').text() + ' ' + icon);
    }
  }

  // 点击展开收起下拉
  link.click(function(e) {
    list.slideToggle(200);
  });

  // 点击下拉项逻辑
  list.find('li').click(function() {
    var currentLi = jQuery(this);
    // 存当前点击li的类名到localStorage
    localStorage.setItem("Activeli", currentLi.attr("class"));
    // 更新顶部显示文本
    link.html(currentLi.find('a').text() + ' ' + icon);
    // 收起下拉
    list.slideToggle(200);
  });
});

补充说明

  • 代码里取的是li下a标签的纯文本,不会带入多余的HTML结构,更符合你的需求
  • 类名匹配的时候做了空格转义,避免多类名匹配失败的问题
  • 做了非空判断,不会出现localStorage为空时报错的情况

内容的提问来源于stack exchange,提问作者Zain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:06:02