jQuery哈希已更改通配符

jQuery哈希已更改通配符,jquery,hashchange,Jquery,Hashchange,我目前正在基于jQuery构建一个动态网站。 目前我在document.ready上使用此代码: $(window).hashchange( function(){ switch(location.hash) { case "#/calendar": content.load("calendar.php"); break; case "#/media": content.load("media.php");

我目前正在基于jQuery构建一个动态网站。 目前我在document.ready上使用此代码:

$(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需要加载到content div en中,我需要从DB中获取ID为12485的视频。但是如何用javascript覆盖这些散列页面呢


谢谢大家!

使用以下模式添加额外的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)
       {
     ...

使用以下模式添加额外的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)
       {
     ...

我将使用拆分方法:

$(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");
    }
});

我将使用拆分方法:

$(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");
    }
});

如此简单但如此有效,似乎也是未来的最佳解决方案是的,只要保持/keyword/data格式,它就可以满足未来的需求如此简单但如此有效,似乎也是未来的最佳解决方案是的,只要保持/keyword/data格式,它就可以满足未来的需求