1

我是 jQuery 和 javascript 的新手。我正在尝试创建一个单页网站。导航固定在顶部。当在单个页面的新“部分”时,我希望导航显示该部分,并且当前在导航中突出显示的部分。

我设法用scroll()做了一些事情,但它只有在变量'top'大于0时才有效。我知道这可能真的很愚蠢,我做错了,但我是新手,所以我希望这个不打扰你。

http://jsfiddle.net/mAPh6/

$(document).scroll( function() {
    var top = $(document).scrollTop();

    if ( 200 > top > 0 )
        $(".navLinkTop").css("border-bottom", "5px solid #fff568");
    else
        $(".navLinkTop").css("border-bottom", "none");

    if ( 400 > top > 200 )
        $(".navLinkAbout").css("border-bottom", "5px solid #fff568");
    else
        $(".navLinkAbout").css("border-bottom", "none");

    if ( 400 > top > 0 )
        $(".navLinkWork").css("border-bottom", "5px solid #fff568");
    else
        $(".navLinkWork").css("border-bottom", "none");

    if ( 400 > top > 0 )
        $(".navLinkContact").css("border-bottom", "5px solid #fff568");
    else
        $(".navLinkContact").css("border-bottom", "none");
});
4

1 回答 1

2

当您执行类似操作a > b > c时,它不会读出“a 大于 bb 大于 c”。相反,会发生以下情况:

  1. a > b > c评估为
  2. (true) > c(假设 a 确实大于 b)计算为
  3. Number(true) > c因为有类型转换,其计算结果为
  4. 1 > c这是非常随机的

所以,3 > 2 > 0是真的,但是3 > 2 > 1是假的。通常,您只需要&&在执行AND时使用。

这是因为>运算符是二进制的,即它需要两个参数。

你需要做的是(a > b) && (b > c)&&意思是“和”

在您的情况下,这意味着更改语句, 200 > top > 0例如(top < 200) && (top > 0)

于 2013-03-09T14:32:40.523 回答