jQuery哈希改变了通配符

时间:2011-11-01 20:51:34

标签: jquery hashchange

我目前正在构建一个基于jQuery en hashChanged的动态网站。 目前我在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

因此需要在内容div中加载video.php,我需要从DB获取ID为12485的视频。但是如何在javascript中覆盖这些哈希页呢?

谢谢!

2 个答案:

答案 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)
       {
     ...

答案 1 :(得分:2)

我会使用split方法:

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