<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> body, html, ul, li, dl, dt, dd { padding: 0px; margin: 0px; } nav { width: 100px; display: block; float: left; background-color: #c3c3c3; } nav ul { list-style-type: none; overflow: hidden; } nav li { padding: 0px 6px; font-size: 20px; margin-bottom: 10px; } nav li:first-child { margin-top: 10px; } nav li a { text-decoration: none; } article { display: block; margin-left: 100px; padding: 10px; background-color: #ffffff; } </style> </head> <body> <aside> <nav> <ul> <li><a href="/home">home</a></li> <li><a href="/about">about</a></li> <li><a href="/photos">photos</a></li> </ul> </nav> </aside> <article> <dl> <dt>title:</dt> <dd class="title"></dd> <dt>url:</dt> <dd class="url"></dd> <dt class="description">description:</dt> <dd></dd> </dl> </article> <script src="lib/jquery-1.11.2.min.js"></script> <script src="js/index.js"></script> </body> </html>
$(document).ready(function () { function update (info) { $(".title").html(info.title); $(".url").html(info.url); $(".description").html(info.description); } var stateObj = { home: { title: "home", url: "/home", description: "this is home page" }, about: { title: "about", url: "/about", description: "this is about page" }, photos: { title: "photos", url: "/photos", description: "this is photos page" } } $("nav").on("click", "a", {}, function (event) { var state = event.target.getAttribute("href").replace(/\//, ""); event.preventDefault(); history.pushState(stateObj[state], "", event.target.href); update(stateObj[state]); }) window.addEventListener("popstate", function () { var state = history.state; update(state); }); history.pushState(stateObj["home"], "", "/home"); update(stateObj["home"]); })