嗨,我希望有人可以提供帮助。我想隐藏地址栏中的片段标识符,而不是:
www.mydomain.com/example.html#something
我得到:
www.mydomain.com/example.html
当我点击锚标签时。
我看了很多相关的问题和论坛,但仍然无法弄明白。我很确定我应该使用以下内容:
window.location.href.replace(/#.*/,''); //and or .hash
只是无法弄明白。
localScroll插件允许您隐藏或保留标识符,默认情况下它们是隐藏的。我认为很多画廊插件也有类似的选择。
但是当我自己尝试(新手的一点点)时,我发疯到没有结果。
下面是我希望它可以使用的一些基本示例脚本:
<style>
.wrap{
width:300px;
height:200px;
margin:auto;
}
.box{
width:300px;
height:200px;
position:absolute;
display:none;
}
#one{background:red;}
#two{background:blue;}
#three{background:green;}
.load{display:block;}
</style>
<body>
<ul>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
</ul>
<div class="wrap">
<div id="one" class="box load">This is Box 1</div>
<div id="two" class="box">This is Box 2</div>
<div id="three" class="box">This is Box 3</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("ul li a").click(function(){
$("div.box").fadeOut(1000);
$($(this).attr('href')).fadeIn(1000);
});
});
</script>
</body>
答案 0 :(得分:19)
添加
return false;
在点击功能结束时,它将停止此事件传播
答案 1 :(得分:3)
replace
函数返回一个新字符串,它不对旧字符串进行操作。您需要使用:window.location.href = window.location.href.replace(/#.*/,'')
。
但是,这不会产生预期的效果,因为以任何方式更改window.location.href不仅仅是添加或更改哈希标记会导致页面重新加载。
localScroll插件的工作原理是搜索hashtag并使用jQuery scrollTo插件滚动到该位置,并在单击带有哈希标记的链接时阻止浏览器的默认行为。他们实际上没有更改URL以删除哈希,他们已经阻止它出现。
如果你想从URI中删除哈希值,你可以做的最好的事情就是只保留最后的#:
window.location.href = window.location.href.replace(/#.*/,'#');
虽然在某些旧版浏览器中,即使这样也会触发页面重新加载(但只有非常旧的浏览器)。
答案 2 :(得分:-1)