jQuery航路点和更改导航等级取决于当前区段
我想根据当前区段更改导航(固定导航)颜色,但会被航路点卡住。当我调用它时,else语句永远不会执行。有什么想法吗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
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,但您的代码也不能工作。实际上,只有我更新的最后一段代码可以正常工作。