0

我有这个问题,假设我单击一个事件(例如单选按钮 2)来显示() div2 和隐藏() div1。之后,我单击一个链接以重定向到下一页。

然后我点击后退按钮(浏览器<-)。单选按钮 2 被选中,但显示的是 div1 而不是 div2。这是一个示例源代码。如果这可以解决,任何人都可以帮助我。

<!-- test.php START -->
<div id="div_1" style="display: block;">
    <p>First Paragraph</p>
</div>
<div id="div_2" style="display: none;">
    <p>Second Paragraph</p>
</div>


<div>
    <input type="radio" id="rdo1" name="radio" checked/>First
    <input type="radio" id="rdo2" name="radio" />Second
</div>

<div>
    <a href="test1.php">Just to reload the page or go to other page</a>
</div>

<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> 
<script>
    $(document).ready(function() {
        $("#rdo1").click(function () {

            $("#div_1").show();
            $("#div_2").hide();
        });

        $("#rdo2").click(function () {
            $("#div_1").hide();
            console.log('test');
            $("#div_2").show();
        });
    });
</script>
<!-- test.php END-->

<!-- test1.php START -->
 DISPLAY SOMETHING
<!-- test1.php END -->
4

4 回答 4

2

Web 是无状态的,默认情况下浏览器不记得前一页的任何设置。所以当您按下后退按钮时,就像您使用默认 HTML 打开默认页面一样刷新页面

这是预期的默认行为

如果您想要您期望的行为,那么您需要缓存页面或存储状态,无论是在会话中还是在 cookie 中。

于 2012-09-25T03:27:46.240 回答
1

您必须以某种方式保存状态,无论是使用 ajax 或表单帖子的服务器端,还是使用 cookie 或 localStorage 的客户端。

您可以使用jquery-cookie 插件轻松设置 cookie,也可以使用 vanilla javascript 设置 localStorage,如下所示:

<!doctype html>
<meta charset="utf-8">
<title>html5 notepad</title>
<textarea></textarea>
<script>
var n = document.getElementsByTagName('textarea')[0];
n.onchange = function(){localStorage.setItem("n",n.value);}
n.value = localStorage.getItem("n");
</script>
于 2012-09-25T03:25:42.117 回答
1

您可以在 DOMReady 上检查选择了哪个单选输入。

$(document).ready(function() {
       var ind = $('input[name=radio]:checked').index();
       $('div[id^=div]').hide().eq(ind).show()

        $("#rdo1").click(function () {  
            $("#div_1").show();
            $("#div_2").hide();
        });

        $("#rdo2").click(function () {
            $("#div_1").hide();
            console.log('test');
            $("#div_2").show();
        });
})
于 2012-09-25T03:29:29.000 回答
0
if ($('#rdo1').attr('checked')){
         $("#div_1").show();
         $("#div_2").hide();
}
if ($('#rdo2').attr('checked')){
         $("#div_1").hide();
         $("#div_2").show();
}

 $("#rdo1").click(function () {

    $("#div_1").show();
    $("#div_2").hide();
});

$("#rdo2").click(function () {
    $("#div_1").hide();
    console.log('test');
    $("#div_2").show();
});​
于 2012-09-25T03:31:46.237 回答