示例: 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)没有帮助。我不确定过滤器是否正在使用?
答案 0 :(得分:1)
a[hash=
应为a[href$=
$=
表示结尾的地方。
替换:
... $('#menu a').filter('a[hash=' + inview + ']');
使用:
... $('#menu a[href$="' + inview + '"]');
答案 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标签。