我想更改导航(固定导航)颜色取决于当前部分,但是遇到了航点。当我调用它时,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');
}
}
});
答案 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');
}
});
想法是检查触发你的航点的元素是否等于白色或黑色......或