jQuery Waypoints和更改导航类取决于当前部分

时间:2015-04-23 13:06:06

标签: jquery jquery-waypoints

我想更改导航(固定导航)颜色取决于当前部分,但是遇到了航点。当我调用它时,else语句永远不会执行。有任何想法吗?

    var mainNav = $('.navigation');
    var section = $('section'),
    white = $("section[data-color='white']"),
    black = $("section[data-color='black']");


    $('section').waypoint(function(){
        if (white) {
            mainNav.removeClass('light');
        }
        else {
            mainNav.addClass('light');
        }

    });

白色和黑色是jQuery对象,而不是HTMLElements。 Waypoints中的元素选项需要一个普通的ol'元素。所以我使用了库提供的jQuery扩展。下面的一个是完美的工作。

        var mainNav = $('.navigation');
        var $section = $('section'),
        white = $("section[data-color='white']"),
        black = $("section[data-color='black']");

    white.waypoint({
        handler: function(direction) {
            mainNav.removeClass('light');
            if (direction == 'up') {
                mainNav.addClass('light');
            }
        }
    });

    black.waypoint({
        handler: function (direction) {
            mainNav.addClass('light');
            if (direction == 'up') {
                mainNav.removeClass('light');
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

else语句永远不会执行,因为if()中的变量永远不会更改“white”变量始终为true且等于初始化的内容。试试这个:

 var mainNav = $('.navigation');
    var section = $('section'),
    white = $("section[data-color='white']"),
    black = $("section[data-color='black']");


    $('section').waypoint(function(){
        if (this.element == white[0]) {
            mainNav.removeClass('light');
        }
        else {
            mainNav.addClass('light');
        }

    });

想法是检查触发你的航点的元素是否等于白色或黑色......或