3

当我的 event.value 是 == 到 / 时,我需要从 url 中删除 #。我有一个带有 jquery.address 的 lighbox,它存储对打开图像的引用,当我关闭它时,我需要删除 # 标记,因为这会导致窗口滚动到顶部。

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

5 回答 5

2

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

于 2010-11-25T09:49:29.860 回答
2

尝试这个

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

console.log(newHash);

如果您有一个锚点,那么它通常会附加在 URL 的开头,因此但是删除第一个字符,您不应该再将它作为一个问题。

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

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

console.log(newHash);
于 2011-02-17T19:02:51.700 回答
2

您也可以使用它(它会完全删除哈希并立即清理 URL)

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

哪些变化

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

http://www.google.com/
于 2013-09-06T13:21:07.713 回答
1

我发现在与您的情况类似的情况下,更改哈希后的值最有效。它需要是您页面上尚不存在的哈希值。

function removeDeepLink(event) {
    window.location.hash = 'foo';
};
于 2013-05-17T15:27:29.863 回答
0

window.location.hash = ''在我的情况下不起作用。

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

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

谢谢你

于 2010-11-25T10:01:25.863 回答