window.location.hash将活动类放在当前锚点而不是导航锚点上

时间:2014-07-03 01:50:06

标签: javascript jquery css

我有以下内容,如果我点击带有锚#home#about等的导航项,它会滚动到下一部分并将导航项类设置为{{1这很棒。

现在我在主页部分的内容中添加了一个“转到关于部分”按钮,其中包含active个锚点。它会将我带到该部分,但将实际按钮设置为#about类,而不是将导航项 active设置为#about

我的评论如下所示 - 只是想知道如何解决这个问题。谢谢!

active

小提琴在这里:http://jsfiddle.net/8Zuzw/。如您所见,如果您单击“主页”部分中的链接,则不会将导航“约”更改为活动状态。它只是将链接设置为活动。如果你单击一个导航项,它会将其设置为活动状态,这很有效,现在只需要添加一个功能,所以如果你点击导航区外的链接并使用导航项的锚点哈希,导航项应该设置为活跃而不是链接类。

2 个答案:

答案 0 :(得分:1)

通过替换

解决
$(this).addClass('active');

$('a[href="' + hash + '"]').addClass('active');

答案 1 :(得分:0)

好的,我认为这就是你所追求的。我只是更改了这一行:

$(this).addClass('active');

到此:

$(this).parent().addClass('active');
$('ul li a').not($(this)).parent().removeClass('active');

如果您希望父列表和其a都拥有类active,那么您可以这样做:

$(this).addClass('active');
$(this).parent().addClass('active');
$('ul li a').not($(this)).parent().removeClass('active');
$('ul li a').not($(this)).removeClass('active');

这是一个example。那有点像你想要做的吗?