window.location.hash保持附加名称,而不是在单击链接时替换它

时间:2011-03-18 10:16:29

标签: javascript jquery window.location

好的,我有这个脚本99%的工作方式,但我似乎无法弄清楚这一点。

当用户点击某个链接时,它会获取href值并将其剁碎并为我提供该网址的最后一段。在这个例子中,我会说它的主页

所以我的脚本然后抓住主页并将其添加到地址栏中的url。 所以它在完成魔术之后看起来像http://www.site.com/user/s2xi/home

但最初我遇到了一个问题,因为链接如何工作的性质我想它会继续追加我的网址http://www.site.com/user/s2xi#/home,这在我的服务器上不存在

所以我能够摆脱#,它让一切恢复正常......哦,等等,不是不是一切都在第一次尝试中完美无缺......

所以我意识到我的脚本是附加链接名而不是替换它们......哦,不,现在是什么?

我的链接现在看起来像这样:http://www.site.com/user/s2xi/home/someOtherLink

它会将新的链接名称附加到旧的链接名称而不是替换它......

我的剧本:

var newHash    = "",
        shref      = "",
        content    = '#content',
        $c         = $("#content"),
        $cw        = $("#content-wrapper");

    $(".menu-link, #my-account-link").live('click', function(){
        shref = $(this).attr("href").split("/");
        parent.location.hash = $(this).attr("href");
        window.location.hash = shref[5];
        console.log(window.location.hash);
        return false;
    });

    $(window).bind('hashchange', function(){
        if (location.href.indexOf("#") > -1) {
            location.assign(location.href.replace(/\/?#/, "/"));
        }
        newHash = window.location.hash;
        //newHash = window.location.hash.substring(1);
        //newHash = window.location.substring(1);
        //console.log(newHash);
        if(newHash)
        {
            $cw.find(content).fadeOut(200, function() {
                $cw.load(newHash + " #content-wrapper", function() {
                    $c.fadeIn();
                });
            });
        }
    });
    $(window).trigger('hashchange');

脚本逻辑可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

首先,没有/.../g,你只是替换第一场比赛,这可能是你想要的。

你的逻辑看起来是:

  1. 将#替换为链接,因此哈希现在变为链接
  2. 当您单击链接时,处理程序将获取当前href属性中的最后一个段并将其放入哈希值。 请注意,您尚未从网址中删除该细分
  3. 换句话说,说它始于:

    http://www.site.com/user/s2xi

    你认为,你是http://www.site.com/user/s2xi/home。然后在你的点击,你得到shref [5] =“家”。然后将其添加到当前网址的哈希中,这样就可以了:

    http://www.site.com/user/s2xi#home

    然后将该哈希值转换回链接:

    http://www.site.com/user/s2xi/home

    一切都很好。第二次点击链接,比如http://www.site.com/user/s2xi/foo。点击后,shref [5] =“foo”。

    然后将其添加到当前网址的哈希:

    http://www.site.com/user/s2xi/home#foo

    然后将该哈希值转换回链接:

    http://www.site.com/user/s2xi/home/foo

    瞧。您附加了链接而不是替换它。您应该更换网址中的细分。