其實就是同樣的程式碼但我多加了幾行註解。
<!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
沒有留言:
張貼留言