2011-11-01 40 views
1

我目前正在基於jQuery和hashChanged建立一個動態網站。 目前我使用的document.ready此代碼:jQuery哈希更改通配符

$(window).hashchange(function(){ 
    switch(location.hash) 
    { 
    case "#/calendar": 
     content.load("calendar.php"); 
     break; 
    case "#/media": 
     content.load("media.php"); 
     break; 
    case "#/social": 
     content.load("social.php"); 
     break; 
    case "#/settings": 
     content.load("settings.php"); 
     break; 
    default: 
     content.load("home.php"); 
     title.text("Debafla"); 
    } 
}); 

現在我建立一個視頻galery,所以我想用的URL這樣的:

example.com/#/video/12485 

所以video.php需要被加載到內容分區我需要從數據庫中獲取ID爲12485的視頻。但我怎樣才能在JavaScript中覆蓋這些哈希頁?

謝謝!

回答

2

我會用分割法:

$(window).hashchange(function(){ 
    switch(location.hash.split("/")[1]) 
    { 
    case "calendar": 
     content.load("calendar.php"); 
     break; 
    case "media": 
     content.load("media.php"); 
     break; 
    case "social": 
     content.load("social.php"); 
     break; 
    case "settings": 
     content.load("settings.php"); 
     break; 
    case "video": 
     content.load("video.php?v=" + location.hash.split("/")[2]); 
     break; 
    default: 
     content.load("home.php"); 
     title.text("Debafla"); 
    } 
}); 
+0

如此簡單,但非常有效,也似乎爲最佳解決方案未來 – user1013338

+0

是的,只要保留'#/關鍵字/數據'格式,它就應該適用於將來的需求。 :) –

2

添加額外的if-else條件,採用以下模式:

$(window).hashchange(function(){ 
    if (/^#\/video\/\d+$/.test(location.hash)) { //hash equals #/video/numbers ? 
     var num = location.hash.match(/\d+/)[0]; //12485, for example 
     //do something, for example: 
     content.load("video.php?video_id=" + num); 

    } else {//Else switch: 
     switch(location.hash) 
     { 
    ...