use*_*057 17 html jquery smooth-scrolling razor twitter-bootstrap
问题背景:
我有一个2页的网站.两个页面都使用相同的masterlayout.cshtml页面,其中包含一个Navbar.在Navbar中有许多链接,这些链接根据其ID向下滚动到第一页上的相关div.
问题:
当我访问第二页时,我无法再从第一页上的Navbar链接重定向到指定的div.这是有道理的,因为重点不再是第一页,但我如何解决这个问题?
码:
以下是具有div id设置的Navbar代码,请注意data-id指定要滚动到哪个div 的属性:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="#" class="scroll-link" data-id="Welcome">Welcome</a></li>
<li><a href="#" class="scroll-link" data-id="features">Club</a></li>
<li><a href="#" class="scroll-link" data-id="About">About Us</a></li>
<li><a href="#" class="scroll-link" data-id="Location">Location</a></li>
<li><a href='@Url.Action("FutureEvents", "Events", new { pageNo = 1 })'>Events</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
滚动到的div的示例:
<div id="Welcome">
//HTML
</div>
Run Code Online (Sandbox Code Playgroud)
JQuery用于滚动到相关的div:
function scrollToID(id, speed) {
var offSet = 70;
var obj = $(id).offset();
var targetOffset = $(id).offset().top - offSet;
$('html,body').animate({ scrollTop: targetOffset }, speed);
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助提出一个可行的解决方案,以便能够从一个非常好的不同页面调用这些id.
这可以用cookies完成.设置一个cookie,id你想要滚动,然后,当加载新页面时,读取cookie并滚动到已定义id.我使用了非常流行的插件jquery-cookie.
这是JavaScript代码:
$(document).ready(function () {
// Read the cookie and if it's defined scroll to id
var scroll = $.cookie('scroll');
if(scroll){
scrollToID(scroll, 1000);
$.removeCookie('scroll');
}
// Handle event onclick, setting the cookie when the href != #
$('.nav a').click(function (e) {
e.preventDefault();
var id = $(this).data('id');
var href = $(this).attr('href');
if(href === '#'){
scrollToID(id, 1000);
}else{
$.cookie('scroll', id);
window.location.href = href;
}
});
// scrollToID function
function scrollToID(id, speed) {
var offSet = 70;
var obj = $('#' + id);
if(obj.length){
var offs = obj.offset();
var targetOffset = offs.top - offSet;
$('html,body').animate({ scrollTop: targetOffset }, speed);
}
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,我准备了一个最小的例子:
http://plnkr.co/edit/l2aassM4biyNRWNCrvUz?p=preview
注意:单击Events导航到另一页.