好的,我有这个脚本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');
脚本逻辑可能出现什么问题?
答案 0 :(得分:0)
首先,没有/.../g
,你只是替换第一场比赛,这可能是你想要的。
你的逻辑看起来是:
换句话说,说它始于:
你认为,你是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
瞧。您附加了链接而不是替换它。您应该更换网址中的细分。