【发布时间】:2015-08-11 16:20:18
【问题描述】:
问题背景:
我有一个 2 页的网站。两个页面都使用相同的 masterlayout.cshtml 页面,该页面具有导航栏。 Navbar 中有许多链接,它们根据 ID 向下滚动到第一页上的相关 div。
问题:
当我访问第二页时,我无法再从第一页的导航栏链接重定向到指定的 div。这是有道理的,因为焦点不再在第一页上,但我该如何解决这个问题?
代码:
这里是设置了 div id 的导航栏代码,注意 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>
滚动到的 div 示例:
<div id="Welcome">
//HTML
</div>
用于滚动到相关 div 的 JQuery:
function scrollToID(id, speed) {
var offSet = 70;
var obj = $(id).offset();
var targetOffset = $(id).offset().top - offSet;
$('html,body').animate({ scrollTop: targetOffset }, speed);
}
如果有人可以帮助提出一个可行的解决方案,以便能够从不同的页面调用这些 ID,那就太好了。
【问题讨论】:
-
您有什么理由使用 data-id 来设置 id 名称吗?你能不能不使用 Welcome 之类的 href
-
@AaronVanston 感谢您的回复。我确实想过自己使用
a href,但我收到一条错误消息,指出“无法解析 id 'Welcome'” -
如果要在 ID 不存在的页面上显示导航栏,则链接应包含它们所在的文件,例如:欢迎
-
@AaronVanston 再次感谢您的回复。我尝试指定我的母版页
<li><a href="_Layout.cshtml#Welcome" class="scroll-link">Welcome</a></li>,但仍然无法解析 ID。 -
不清楚您提供的这些部分如何相互交互。问题规范也不清楚。什么时候调用
scrollToID()函数?onload?onclick?您是在服务器端还是客户端生成导航链接?导航栏生成的 HTML 是什么?加载“第二页”后,单击时是否出现 Javascript 错误?
标签: jquery html twitter-bootstrap razor smooth-scrolling