【问题标题】: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 显示。
【问题讨论】:
标签:
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 时,页面可能会再次重新加载,但我认为不会。