从href链接中填充哈希并选择它的问题

时间:2012-04-23 18:22:06

标签: javascript jquery html

示例: http://jsfiddle.net/dfcyb/

我有这两个变种

var inview = '#' + $("#container > .section > h1:in-viewport:first").parent().attr('id');
var $link = $('#menu a').filter('a[hash=' + inview + ']');

inview 检查特定部分是否在视口中,然后使用 $ link var添加类。我不确定我在这里做错了什么。 Inview工作正常但是:

$link.parent().addClass('selected');

什么都不做。我不确定我在这里有什么错误或如何进行调试,因为console.log($ link)没有帮助。我不确定过滤器是否正在使用?

3 个答案:

答案 0 :(得分:1)

a[hash=应为a[href$=

$=表示结尾的地方。

替换:

... $('#menu a').filter('a[hash=' + inview + ']');

使用:

... $('#menu a[href$="' + inview + '"]');

来源:http://api.jquery.com/attribute-ends-with-selector/

答案 1 :(得分:0)

您的jsFiddle存在许多问题。

首先,没有:in-viewport选择器。你需要使用一个插件(如this one)。

其次,$("#container > .section > h1")。在您的示例中,没有<h1>标记。

第三,<a>代码没有hash属性,应该是a[href='']

第四,$link<a>标记,但在您的CSS中,selected类应位于<li>

以下是更新的示例:http://jsfiddle.net/dfcyb/1/

答案 2 :(得分:0)

我想你想要:

$("#container > .section > h1.in-viewport:first")

而不是:

$("#container > .section > h1:in-viewport:first")

这就是#undefined的来源,你在jsfiddle上的示例代码中没有任何H1标签。