2010-11-25 83 views
3

当我的event.value ==为/时,我需要从网址中删除#。 我有一个jquery.address的存储引用打开图像,当我关闭它我需要删除#标记因为这个原因窗口滚动顶部lighbox。JQuery.address如何从网址中删除#(javascript window.location删除#)

我成功的删除了#标记:window.location.href.slice(0,-1);但正如你可以在上面的代码中看到的那样,当页面加载时,不仅在我的事件之后导致url重写。

我如何链接此JavaScript只有当我完成发生时,在这个函数被称为olny当我关闭灯箱的方式。

我附上我的代码和评论。 谢谢大家

$.address.change(function(event) { 
    curLink = event.value; 
    if(curLink != '/') { 

    // here my stuff, jquery.address generates url with reference 

    // ex: mysite.com/cat/subcat/page.html#one 

    } else { 

     $('#element').animate({opacity:"0"},{duration:100, easing:"quartEaseOut", complete: function() { 

     // here I need to remove the hash only after the complete 

     // ex: mysite.com/cat/subcat/page.html# > mysite.com/cat/subcat/page.html 

     window.location.href.slice(0, -1);   
     $(this).hide(); 
    }}); 
    } 
}); 

回答

0

window.location.hash = ''不适用于我的情况。

window.location.href.slice(0, -1);作品!我无法解决的问题是如何在完整的jQuery事件(现在它在页面加载时触发)之后链接此JavaScript指令。

我认为现在是愚蠢的JavaScript调用后jQuery的

谢谢

2

试试这个

newHash = window.location.hash.substring(1); 

console.log(newHash); 

,如果你有一个锚那么它通常在网址的开头附加左右,但删除第一个字符,那么你不应该把它作为一个问题了。

,或者如果你甚至可以这样说,我认为这是你可能需要什么

newHash = window.location.hash.replace('#', ''); 

console.log(newHash); 
+0

这是一个有用的评论,谢谢 – radleybobins 2012-11-27 03:44:13

1

我发现,改变了哈希后的价值与你相似的场景效果最好。它需要是您的页面上尚未存在的散列。

function removeDeepLink(event) { 
    window.location.hash = 'foo'; 
}; 
1

你也使用这个(其中完全消除了哈希和清洁URL右后卫)

history.pushState("", document.title, window.location.pathname); 

从而改变

http://www.google.com/#top 

http://www.google.com/