【问题标题】:How to keep button state across different pages?如何在不同页面之间保持按钮状态?
【发布时间】:2018-03-30 00:46:00
【问题描述】:

当我单击时,我将disabled attribute 分配给按钮:

$(".save_post").on("click", function() {
    $(this).attr("disabled", "true");
});

但是,如果我更改页面然后返回此页面,则按钮应保留给定的 disabled 属性,如果我使用 localStorage 这很好:

localStorage.setItem("savedArticle", "savedButton");
var myButtonState = localStorage.getItem("savedArticle", "savedButton");
$(".save_post").addClass(myButtonState);

但是,我有不同的页面可以有<button type="button" class="save_post">SAVE</button>,所以每次我点击一个按钮时,都会给出一个disabled attribute,但如果我像上面一样使用localStorage,它会添加myButtonState每次我们用它登陆一个页面时,带有 .save_post 类的按钮。

我正在尝试仅将属性添加到真正点击的按钮。

【问题讨论】:

  • 改用id
  • @BenM mm 也许这实际上是一个想法,所以每次我们登陆一个页面时生成一个新的 ID 并保存该 ID,然后根据它添加属性?
  • 您希望如何保存每个页面的这些状态?数据库?饼干?可能需要一个更完整的例子。这些按钮有 ID 吗?
  • 好吧,如果它们都必须分开,那么您必须设置每一个。如何?存储中的一系列单独的记录......真的有很多方法
  • @Twisty 我不需要 cookie 和数据库,localStorage 就可以了

标签: javascript jquery


【解决方案1】:

只需为每个 .save_post 元素分配一个 ID:

<button id="savePost1" class="save_post">Save Post</button>

然后引用ID:

$('.save_post').on('click', function() {
    $(this).attr("disabled", "true");
    localStorage.setItem('saveButton', $(this).attr('id'));
});

然后在加载时调用它:

$('#'+localStorage.getItem('saveButton')).attr('disabled', true);

【讨论】:

  • 非常棒,非常有意义。非常感谢。一分钟后接受
  • @rob.m 唯一的问题是用户是否能够单击多个.save_post 按钮。
  • 他们将无法这样做,因为我一点击就设置了禁用属性,因此按钮在点击后立即被禁用,而不仅仅是将状态保存在 localStorage 中
  • 或者我可以简单地将其添加为数组列表并使数组唯一,但这会无缘无故地复杂化,除非您从 html 中手动删除禁用的属性
  • 实际上有一个问题,通过这样做,我们总是替换saveId,我们应该将它们添加为一个数组,因为我们将添加许多id,因为我们有很多页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多