jQuery航路点和更改导航等级取决于当前区段

jQuery航路点和更改导航等级取决于当前区段,jquery,jquery-waypoints,Jquery,Jquery Waypoints,我想根据当前区段更改导航(固定导航)颜色,但会被航路点卡住。当我调用它时,else语句永远不会执行。有什么想法吗 var mainNav = $('.navigation'); var section = $('section'), white = $("section[data-color='white']"), black = $("section[data-color='black']"); $('section').waypoint(funct

我想根据当前区段更改导航(固定导航)颜色,但会被航路点卡住。当我调用它时,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对象,而不是HtmleElement。航路点中的元素选项需要一个普通的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');
            }
        }
    });

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');
        }

    });

其想法是检查触发航路点的元素是否等于白色或黑色,或者……

尝试使用
white.length
它也不能使用
white.length
。创建一个JSFIDLE或显示相关HTML代码在哪个文件/行中出现错误?确切地说是@jpprade,但您的代码也不能工作。实际上,只有我更新的最后一段代码可以正常工作。