路由

js中路由通常是一種基于監(jiān)聽url中hash值變化完成頁(yè)面內(nèi)容更新的技術(shù)手段。

傳統(tǒng)事件處理方式

? ? ? ? ?$("ul").on("click", "li", function(){

? ? ? ? ? ? ?var index = $(this).index();

? ? ? ? ? ? ?$("#content div").eq(index).show().siblings("div").hide();

? ? ? ? ?});

????????//監(jiān)聽hash的變化

1、使用window的onhashchange

? ? ? ? ?window.onhashchange = function(e){

? ? ? ? ? ? var hash = location.hash.substr(1);

? ? ? ? ? ? ?router[hash]();

? ? ? ? ?};

2、window.onpopstate

? ? ? ? ?window.onpopstate = function(e){

? ? ? ? ? ? ?var hash = location.hash.substr(1);

? ? ? ? ? ? ?router[hash]();

? ? ? ? ?};

3、使用計(jì)時(shí)器不間斷監(jiān)聽hash值變化

????????var lastHash = location.hash.substr(1);

????????var hashInterval = setInterval(function(){

????????????var hash = location.hash.substr(1);

????????????if(hash != lastHash){

????????????????//執(zhí)行新hash對(duì)應(yīng)的回調(diào)

????????????????router[hash]();

????????????????//更新上一次hash

????????????????lastHash = hash;

????????????}

????????}, 50);

//創(chuàng)建路由表

? ?var router = {

? ? ? ? ? ?"home": function(){

? ? ? ? ? ? ? var script = document.createElement("script");

????????????????script.src = "home.js";

????????????????document.head.appendChild(script);

? ? ? ? ? ?},

????????????"hot": function(){

????????????????$("#hot").show().siblings().hide();

????????????},

????????????"mine": function(){

????????????????$("#mine").show().siblings().hide();

????????????}

????????};

????????// $(window).trigger("popstate");

????????var hash = location.hash.substr(1);

????????router[hash]();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容