JQuery.address如何从url中删除#(javascript window.location remove#)

时间:2010-11-25 09:14:18

标签: jquery fragment-identifier window.location

当event.value为==时,我需要从网址中删除#。 我有一个带有jquery.address的lighbox,用于存储对打开图像的引用,当我关闭它时,我需要删除#mark becouse this cause window scroll top。

我成功删除了#mark: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(); 
    }});   
  }   
});

5 个答案:

答案 0 :(得分:2)

使用window.location.hash = ''应该彻底删除它,否则会有一些好的插件可以打开许多用于处理网址的功能(例如http://ajaxcssblog.com/jquery/url-read-request-variables)。

答案 1 :(得分:2)

试试这个

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

console.log(newHash);

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

或者你甚至可以这样做,我认为这是你可能需要的

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

console.log(newHash);

答案 2 :(得分:1)

我发现在哈希值之后更改值最适合与您类似的场景。它需要是您网页上尚未存在的哈希值。

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

答案 3 :(得分:1)

你也可以使用它(它完全删除哈希并清理URL备份)

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

哪些更改

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

http://www.google.com/

答案 4 :(得分:0)

window.location.hash = ''在我的案例中不起作用。

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

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

谢谢