【问题标题】:Jquery on click refreshJquery点击刷新
【发布时间】:2012-02-22 18:16:56
【问题描述】:

我有一个 jquery 函数 onclick 可以隐藏和显示 div:

function toggleInteractlogin(x)
{
 if(x=='register')
    {
        $('#login').hide();
        $('#register').show();
    }
    else
    {
        $('#register').hide();
        $('#login').show();
    }
}

但是,每当刷新页面时,我试图显示的 div 再次隐藏,有没有办法在页面刷新后保持 div 显示。

【问题讨论】:

  • div的初始状态是否隐藏?

标签: jquery html sql css ajax


【解决方案1】:

如果您使用链接,请将href 设置为类似于#key,其中key 是您可以在页面加载(和重新加载)时识别和检测的内容,并自动显示相关的div如有必要。

如果您不使用链接,而是在另一个元素上使用 onclick,请添加 location.href = "#key";

【讨论】:

    【解决方案2】:

    HTML 是无状态的。

    为了保存状态,您可以使用 cookies。您可以将关闭的值放入其中,当您刷新时,您会看到 cookie 中显示的值并进行必要的更新。

    【讨论】:

      【解决方案3】:

      当页面刷新时,它会恢复到原始状态。您必须在某处设置浏览器即使在刷新时也能维护的东西,例如查询字符串或通过更改位置(如 Kolink 的建议)的哈希值。比你可以得到的值来检查 div 是否应该被隐藏。我不确定隐藏输入是否在页面刷新时保持该值,但这也可能是一种解决方案。 总之,您可以尝试在点击事件中的查询字符串、哈希或隐藏输入中设置一个值,并在加载页面时检查该值并相应地隐藏/显示您的 div。

      示例:

      function toggleInteractlogin(x)
      {
       if(x=='register')
          {
              location.href = "#register";
              $('#login').hide();
              $('#register').show();
          }
          else
          {
              location.href = "#login";
              $('#register').hide();
              $('#login').show();
          }
      }
      

      并在加载事件时将其添加到您的文档中,或将其放在任何函数之外的某个位置,以便在页面加载时执行。

      toggleInteractlogin(location.hash.substring(location.hash.indexOf('#')+1));
      

      我没有测试这个。您可能需要在加载事件的文档上调用另一个类似于 toggleInteractlogin 的函数,但没有 location.href = ... 部分。我不确定,但是当您设置 location.href 时,页面可能会再次重新加载,但我认为不会。

      【讨论】:

        猜你喜欢
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多