单击一页滚动菜单时更改URL哈希值
Changing URL hash value when one page scrolling menu is clicked
我有一个单页滚动脚本。
<script>
$(function() {
$('.nav li a').bind('click',function(event){
var $anchor2 = $(this).parent();
var $anchor = $(this);
$('.nav li').removeClass('active');
$anchor2.addClass('active');
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top - 50
}, 1500,'easeInOutExpo');
event.preventDefault();
});
});
</script>
上面的剧本非常完美。但是地址栏中的典型URL如下
example.com/index.html
example.com/index.html#about
example.com/index.html#contact
我想把这个URL改成更整洁、更实用的东西,比如
example.com/about
example.com/contact
如果直接访问上面的URL,它应该在相同的滚动位置。我们如何在jQuery中做到这一点?
使用location.hash
和document.title
$('.nav li').on('click', 'a', function(event){
if ($(this).parent("li").hasClass("active")){
return false;
}else{
var go2hash = $(this).attr("data-hash");
$(this).parent("li").addClass("active").siblings("li").removeClass("active");
document.title = go2hash;
location.hash = go2hash;
event.preventDefault();
}
});
锚状:
<nav>
<li><a data-hash=home>home</a></li>
<li><a data-hash=work>work</a></li>
<li><a data-hash=contact>contact</a></li>
<nav>
如果您使用Apache,并且只关心来自站点外部的更干净的URL,则可以在根目录中的.htaccess文件中使用ModRewrite规则。
此示例会将example.com/contact的请求重定向到example.com/#contact,并在正确的部分加载页面。
RewriteEngine on
RewriteBase /
RewriteRule ^([a-z]+)/?$ /#$1 [R,NE,L]
一旦进入网站,散列就会回来。我不知道这是否会破坏你的交易。
相关文章:
- 使用Javascript从url中获取空哈希值
- 如何使用JS重定向到具有哈希值的引用URL
- 单击一页滚动菜单时更改URL哈希值
- 在页面加载时,如果URL哈希与数组中的某个值匹配,则滚动到具有匹配数据加载id属性的元素
- 如何获得新的哈希值的URL没有页面重新加载
- 使用JavaScript搜索URL的哈希值,而不是特定的字符串
- 需要移除url参数前的哈希值
- 在jquery的url(锚)中获得许多#哈希值
- 在单击事件/函数期间获取URL哈希值
- 如何通过url哈希传递值到多个选择下拉
- 将类切换到特定元素取决于URL的哈希值
- 在nodejs中通过url获取哈希值
- toState.Url值不是嵌套状态的绝对哈希值
- 当只有url哈希值发生变化时,我如何重新加载整个页面?
- 更改URL不会重新加载文档->如何检查哈希值
- 清除URL哈希值
- 在IE9浏览器返回按钮的url中更改了哈希值
- 函数将URL哈希参数转换为对象(键值对)
- 使用JavaScript检测URL哈希值的更改
- 如果页面 URL 中存在哈希值,则添加类