1

示例: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) 没有帮助。我不确定这里是否正在使用过滤器?

4

3 回答 3

1

a[hash=应该a[href$=

手段以哪里$=结束。

代替:

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

和:

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

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

于 2012-04-23T18:27:39.563 回答
0

您的 jsFiddle 存在许多问题。

首先没有:in-viewport选择器。你需要使用一个插件(比如这个)来做到这一点。

第二,$("#container > .section > h1")。在您的示例中,没有<h1>标签。

第三,<a>标签没有hash属性,应该是a[href=''].

第四,$link<a>标签,但在你的 CSS 中,selected类应该在<li>.

这是一个更新的示例:http: //jsfiddle.net/dfcyb/1/

于 2012-04-23T18:34:00.337 回答
0

我想你想要:

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

代替:

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

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

于 2012-04-23T18:40:37.570 回答