2017/3/3

讓AJAX動態內容支援瀏...的補充註解

為了解決我ajax回上一頁抓的資料不見的問題,而找到的暗黑大的這篇文章,雖然最後用了sessionStorage去解決,但還是把他那篇文章程式碼研究了一下,因此還是想記錄起來。

其實就是同樣的程式碼但我多加了幾行註解。
<!DOCTYPE html>
<html>
    <head>
        <title>AJAX GoBack</title>
        <script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.ba-bbq/1.2.1/jquery.ba-bbq.min.js" type="text/javascript"></script>
        <script>
            $(function() {
                $("#s1").show();
                $("input.nav-btn").click(function() {
                    var $btn = $(this); //this為目前被點擊的btn物件
                    $btn.parent().hide(); //當點擊按鈕後,就把自己隱藏。如:點擊STEP1的按鈕,就把自己的父類別div隱藏
                    var nav = $btn.data("nav"); //取得現在這個按鈕的data-nav屬性的值,第一次點擊就取得s2,$btn.data("nav")就是印出s2
                    $("#" + nav).show(); //顯示下一個div
                    //將目前的步驟加註在location.hash
                    $.bbq.pushState({
                        step: nav
                    }); //pushState裡面的東西就是key:value形式
                });
                //hash變化時觸發hashchange事件
                $(window).bind('hashchange', function(e) { //控制上一頁的動作
                    //由hash取出step參數,決定要顯示哪一個div
                    var s = e.getState("step") || "s1"; //e.getState("step")回傳s2 or s3
                    //if (!$("#" + s + ":visible").length) {
                    $("#main > div").hide();
                    $("#" + s).show();
                    //}
                });
            });
        </script>
        <style>
            #main div {
            width: 300px;
            height: 200px;
            display: none;
            padding: 10px;
            }
            #s1 {
                background-color: #ff7777;
            }
            #s2 {
                background-color: #77ff77;
            }
            #s3 {
                background-color: #7777ff;
            }
        </style>
    </head>
    <body>
        <div id="main">
            <div id="s1">
                STEP1
                <input type="button" class="nav-btn" value="Next" data-nav="s2" />
            </div>
            <div id="s2">
                STEP2
                <input type="button" class="nav-btn" value="Next" data-nav="s3" />
            </div>
            <div id="s3">
                FINAL
                <input type="button" value="Submit" />
            </div>
        </div>
    </body>
</html>

參考:http://bit.ly/2lJqANm

沒有留言:

張貼留言