编辑
我使用以下代码创建了自己的修复程序。它使用偏移量来获取锚标记的位置,并在到达该滚动点时将活动类添加到导航列表项。运行良好且高效:
customScrollSpy($(window).scrollTop());
$(window).on('scroll', function() {
var st = $(this).scrollTop();
customScrollSpy(st);
});
function customScrollSpy(st) {
if ((st >= $("#top").offset().top && st < $("#latest-work").offset().top) && !$("#nav-item-1").hasClass("active"))
{
$('[id^="nav-item-"]').removeClass("active");
$("#nav-item-1").addClass("active");
}
else if ((st >= $("#latest-work").offset().top && st < $("#content1").offset().top) && !$("#nav-item-2").hasClass("active"))
{
$('[id^="nav-item-"]').removeClass("active");
$("#nav-item-2").addClass("active");
}
else if ((st >= $("#content1").offset().top && st < $("#latest-news").offset().top) && !$("#nav-item-3").hasClass("active"))
{
$('[id^="nav-item-"]').removeClass("active");
$("#nav-item-3").addClass("active");
}
else if (st >= $("#latest-news").offset().top && !$("#nav-item-4").hasClass("active"))
{
$('[id^="nav-item-"]').removeClass("active");
$("#nav-item-4").addClass("active");
}
};
结束编辑
正如标题所示,我有 Scrollspy(显然使用 Bootstrap),我用 Javascript 初始化它:
$('#navbar').scrollspy();
哪个工作正常。但是,如果导航栏中的列表元素(li 标签)之一引用了一个模态的 div,它就会翻转。当我开始滚动时,它会将活动类从该列表项翻转到该滚动位置处的正确列表项,因此导航栏列表项看起来像是在您向上和向下滚动时不断闪烁。这是我的导航栏和我身体的开始:
<body id="top" data-spy="scroll" data-target=".navbar">
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="index.html"><img src="img/logo.png" alt="logo"></a>
<div class="nav-collapse collapse">
<ul class="nav pull-right">
<li><a class="scroll" href="#top">Home</a></li>
<li><a class="scroll" href="#latest-work">Work</a></li>
<li><a class="scroll" href="#content1">About</a></li>
<li><a class="scroll" href="#latest-news">News</a></li>
<li><a class="scroll" data-toggle="modal" href="#request-quote">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
如您所见,最后一个列表项(“联系人”)是破坏它的原因。删除“滚动”类没有任何帮助。我不确定问题出在哪里,但是更改该列表项上的 href 可以解决整个问题。此外,我在导航栏下方的轮播中有一个按钮,它也打开了模式。它似乎不会导致这个问题 - 如果我更改 Contact li 的 href 但让按钮指向上面代码中 Contact 指向的相同模式,这也可以正常工作。
这是重要的情况下的模态:
<!--Request Quote modal-->
<div id="request-quote" class="modal hide fade" tabindex="-1" data-width="760">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Request a quote</h3>
</div>
<form method="POST" action="contact-form-submission.php" class="form-horizontal">
<div class="modal-body">
<div class="row-fluid">
<div class="span12">
<h4>*All information is required</h4>
<p><label>Full Name</label>
<input name="name" type="text" class="span12"></p>
<p><label>Band Name</label>
<input name="band_name" type="text" class="span12"></p>
<p><label>Email</label>
<input name="email" type="email" class="span12"></p>
<p><label>Link to Your Band's Prior Material (Facebook, Youtube, etc.)</label>
<input name="link" type="text" class="span12"></p>
</div>
</div>
<div class="row-fluid">
<h5 class="span12">What are you looking for?</h5>
</div>
<div class="row-fluid">
<div class="span4">
<p><label>Select all that apply:</label></p>
<p class="form-boxes"><label class="hand">
<input name="tracking" type="checkbox" value="tracking"> Tracking
</label>
<label class="hand">
<input name="mixing" type="checkbox" value="mixing"> Mixing
</label>
<label class="hand">
<input name="mastering" type="checkbox" value="mastering"> Mastering
</label>
<label class="hand">
<input name="editing" type="checkbox" value="editing"> Editing
</label>
<label class="hand">
<input name="other" type="checkbox" value="other"> Other
</label></p>
</div>
<div class="span8">
<p><label>Number of Songs</label>
<input name="songs" type="text" class="span12"></p>
<p><label>Explain your project/needs (if you selected "other", please clarify)</label>
<textarea name="comments" class="span12"></textarea></p>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-inverse">Close</button>
<button type="submit" class="btn btn-primary">Send</button>
</div>
</form>
</div>
<!--/Request Quote modal-->
任何帮助将不胜感激。
更新:
我注释掉了$('#navbar').scrollspy();
,它仍然在发生。删除我的模态代码有效,所以我不确定问题是什么......除了这个,模态函数很好。任何想法发生了什么?