我在我的单页滚动网站(index.html)中添加了2个html文件。我遇到了导航栏(bootstrap)的问题。当点击“faq”的“预订表单”时,由于所包含的index.html上的滚动功能,页面不会转移到选定的html文件。我该如何解决?
我已经尝试在#home,#service,#corporate和#contact链接中添加一个类,并将相同的类添加到“navbar a”后面的Jquery函数中。它的工作原理是这样,但是index.html上的滚动就消失了。
index.html导航栏:
<body data-spy="scroll" data-offset="80">
<div id="nav" class="navbar navbar-default navbar-fixed-top menu-top">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="index.html" class="navbar-brand">LOGO</a>
</div>
<div class="navbar-collapse collapse">
<nav>
<ul class="nav navbar-nav navbar-right">
<li class="active"><a class="page-scroll" href="#home">Home</a></li>
<li><a class="page-scroll" href="#service">Services</a></li>
<li><a class="page-scroll" href="#corporate">Corporate</a></li>
<li><a class="page-scroll" href="#contact">Contact</a></li>
<li><a href="bookingform.html">Booking Form</a></li>
<li><a href="faqs.html">FAQ</a></li>
</ul>
</nav>
</div>
</div>
<!--- END COL -->
</div>
<!--- END COL -->
</div>
<!--- END CONTAINER -->
</div>
faqs.html导航栏:
<body data-spy="scroll" data-offset="80">
<div id="nav" class="navbar navbar-default navbar-fixed-top menu-top">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="index.html" class="navbar-brand">LOGO</a>
</div>
<div class="navbar-collapse collapse">
<nav>
<ul class="nav navbar-nav navbar-right">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#service">Services</a></li>
<li><a href="index.html#corporate">Corporate</a></li>
<li><a href="index.html#contact">Contact</a></li>
<li><a href="bookingform.html">Booking Form</a></li>
<li class="active"><a href="faqs.html">FAQ</a></li>
</ul>
</nav>
</div>
</div>
<!--- END COL -->
</div>
<!--- END COL -->
</div>
<!--- END CONTAINER -->
</div>
js文件开头的Jquery函数:
$(document).ready(function () {
$('select').niceSelect();
// Add smooth scrolling to all links in navbar + footer link
$(".navbar a, footer a[href='#myPage'], .overlay-detail a").on('click', function (event) {
// Prevent default anchor click behavior
event.preventDefault();
// Store hash
var hash = this.hash;
// Using jQuery's animate() method to add smooth page scroll
// The optional number (900) specifies the number of milliseconds it takes to scroll to the specified area
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 900, function () {
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
});
以下是在导航栏中单击BookingForm或FAQ选项卡时我在控制台中遇到的错误:
Uncaught TypeError: Cannot read property 'top' of undefined app.js:17
at HTMLAnchorElement.<anonymous> (app.js:17)
at HTMLAnchorElement.dispatch (jquery.min.js:3)
at HTMLAnchorElement.r.handle (jquery.min.js:3)
你的一些元素给出了hash =“”;您尝试修改如下,然后尝试
{
var currentpage = window.location.pathname.split("/").pop();
var nextpage = this.href.split("/").pop();
if ("".search("#" > -1)) {
nextpage = nextpage.split("#")[0];
}
if (this.hash != "" && currentpage == nextpage) {
//prevent default only if required
// pages are different AND has hash
event.preventDefault();
// Store hash
var hash = this.hash;
// Using jQuery's animate() method to add smooth page scroll
// The optional number (900) specifies the number of milliseconds it takes to scroll to the specified area
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 900, function () {
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
}
else
{
//
}
}
试试这个
添加您的文档准备好您想要此类效果的页面
从两个额外的html文件返回index.html时进行更平滑的转换
var hash=location.hash;
if (location.hash!='') {
window.scrollTo(0,0);
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 900, function () {
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
}
```