我为同一页面链接使用 Karl Swedberg 的 jquery 平滑滚动插件: https ://github.com/kswedberg/jquery-smooth-scroll
链接具有固定位置,因此它们始终可见。我希望在您单击链接后突出显示链接,但是当您滚动页面时要删除突出显示(因为您可能不再位于链接对应的部分)。
让链接在点击时改变颜色很简单。但是,随着插件本身的滚动,滚动时移除颜色会更加困难。我试过这段代码:
$(document).ready(function() {
$('#scrollcontrolls a').smoothScroll(
{
afterScroll: function() {
$(window).scroll(function () {
$("#scrollcontrolls a").css("color", "black");
});
}
});
});
$(document).ready(function() {
$('#scrollcontrolls a').click(function() {
$(this).css('color','red');
});
});
问题是一旦窗口滚动功能被初始化,它就会在平滑滚动插件滚动页面时触发。这意味着在您单击一个链接后,它将始终覆盖单击时应用于链接的颜色,因此单击其他链接不会改变它们的颜色。
谢谢
编辑-我制作了一个可以使用以下代码的版本:
$(window).bind('scroll', function () {
$("#scrollcontrolls a").css("color", "black");
});
$(document).ready(function() {
$('#scrollcontrolls a').smoothScroll(
{
afterScroll: function() {
$(window).unbind();
$(this).css('color','red');
$(window).bind('scroll', function () {
$("#scrollcontrolls a").css("color", "black");
});
}
});
});
然而,有时点击链接不会改变它的颜色,但再次点击它会。我认为 afterScroll 触发的不同功能并不总是按顺序运行。如果这是问题所在,我该如何让他们这样做?
谢谢