js获取window.location.hash并将其拆分为数组并替换某个数组元素

时间:2011-02-17 18:00:44

标签: jquery hash window.location

嘿,非常聪明的人!

我对此感到困惑,已经尝试了一个星期而无法找到合理的解决方案。

基本上每当用户点击两组不同的链接时,我都希望附加一个准备好的网址。

到目前为止,在我的代码中发生这种情况

$(selecter a.1).live('click', function(){
   window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

这会使网址看起来像:http://www.site.com/!#/username/page1/

然后我调用一个函数来检测url中的hash变化并将url返回到它应该是什么:

$(window).bind('hashchange', function(){
            hash = window.location.hash;
            //if( hash.indexOf( "/files/" ) == 6 )
                //newHash = window.location.hash.substring(3).replace(usr + '/files', '').replace('/', '.php');
            //else
                newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');
            //newHash = window.location.hash.replace(dump, origHash, 'g');
            console.log(newHash);
            if (newHash) {
                $wrap.find("#main-content").fadeOut(200, function() {
                    $wrap.load(newHash + " #main-content", function() {
                        $content.fadeIn(function() {
                            $wrap.animate({
                                height: baseHeight + $content.height() + "px"
                            }, 500);
                        });
                    });
                });
            }
    });

没有问题,问题是当用户点击第二组链接时,我想对网址略有不同。

$(selecter a.2).live('click', function(){
       window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}

将如下所示:http://www.site.com/!#/username/files/sub-page/

链接的href看起来像这个href =“files / sub-page.php”

我遇到的问题是,通过将窗口绑定到散列更改,它将尝试将url准备回原来的“state”,该状态仅适用于第一组链接。

我知道为什么不将原始href值替换为window.location.hash,但后来意识到......如果用户重新加载页面怎么办?嗯嗯!原来的哈希会丢失!并且url依赖于检测到散列更改,以便它可以加载正确的php页面。

好的,接下来我想也许我可以以某种方式切掉除了url中的最后一个字之外的所有内容并进行替换('/','。php')以获得扩展名...

好吧,另一个问题是,在url中它指向位于files /目录中的files / sub-page.php。

我最初将所有内容放在一个目录中,并希望手动将文件/附加到网址,但是运行时遇到了相同逻辑的问题,所以我想我将它们移动到名为files /的文件夹中,并弄清楚如何欺骗js离开那里的dir路径...

好的,那是我的故事......

我可以请一些帮助吗?

1 个答案:

答案 0 :(得分:0)

你很幸运:https://github.com/allmarkedup/jQuery-URL-Parser

为您解析网址,并为您提供有关如何访问网址的每个位的帮助方法!