Javascript 添加的类不会被记住

Javascript 添加的类不会被记住,javascript,jquery,Javascript,Jquery,我有一个带有2个按钮的导航,当点击一个按钮它将加载一个新页面(新页面加载),当点击按钮,一个选择了classname的类将被添加。。。 它部分地这样做-它添加了类,但是当它加载新页面时,类又被删除了?如何使类坚持用户单击的内容 $(document).on("click", ".list-mode button", function () { $(".list-mode button").removeClass("selected"); $(this).addClass("sel

我有一个带有2个按钮的导航,当点击一个按钮它将加载一个新页面(新页面加载),当点击按钮,一个选择了classname的类将被添加。。。 它部分地这样做-它添加了类,但是当它加载新页面时,类又被删除了?如何使类坚持用户单击的内容

$(document).on("click", ".list-mode button", function () {
    $(".list-mode button").removeClass("selected");
    $(this).addClass("selected");
});

如果要导航到新页面,则使用JavaScript对当前页面所做的更改不会显示在新页面中。您确实有三种选择:

  • 使用服务器端代码将正确的类添加到新页面的HTML中的正确元素中
  • 在新页面中使用JavaScript将正确的类添加到正确的元素中;您需要一种方法来确定应该将类添加到哪个元素(可能是新页面URL的一部分)
  • 使用AJAX导航,只需加载新内容并替换已加载页面的一部分,而不是加载一个全新的页面

  • 您需要cookies或DOM存储来完成此操作

    无论何时要放弃页面,您都需要将用户上次所做的事情存储在某个位置,并使用存储的设置初始化整个按钮

    在使用jQuery时,处理
    document.ready
    事件,并在加载页面时初始化按钮:

    $(document).ready(function() {
       // Initialize the whole buttons
    });
    

    你不能。Javascript不会持久化状态。您将需要某种形式的存储跨HTTP请求选择的值(cookie、数据库、本地存储…)。您必须记住服务器上的类,并在显示下一页时将其写回OK,thx以获取答案-我通过使用本地存储保存用户来解决此问题。单击还有cookie选项。@T.J.Crowder当然,Cookie可以是选项1或2实现的一部分。我不认为有一个单独的选择,虽然他们自己;你仍然需要使用cookie。我更喜欢这里的选项2。这个答案可能会有帮助:“你需要cookies或DOM存储来实现这一点。”正如Anthony指出的,不一定,你可以将信息发送到服务器并保存在那里。@T.J.Crowder我更喜欢将其存储在浏览器中,而不是某个服务器会话状态。我们不知道实际的基本需求。我的意思是:也许当用户离开网站时,这种“跟踪”就会消失,那么为什么要用服务器内存来做这样的事情呢?@Matías:对。但是“需要”是一个很强的词,它排除了其他可能性。@NickyChristensen好吧,当我给你DOM存储的提示时,我说的是本地存储。我很高兴你找到了正确的解决方案@NickyChristensen现在我看到你检查了另一个答案是正确的。虽然您可以选择自己更喜欢的内容,但我相信,如果您使用本地存储解决了问题,这正是我在回答中指出的。