当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();
}});
}
});
答案 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调用
谢谢