原始的jQuery:
$('#container section').each(function() {
$(this).waypoint(function(direction) {
var anchorRef = 'a[href="#' + this.id + '"]';
if (direction === 'down') {
$(anchorRef).animate({'backgroundColor' : 'rgb(230, 77, 78)'});
} else {
$(anchorRef).animate({'backgroundColor' : 'rgb(25, 25, 25)'});
}
});
});
CSS:
.main-menu ul li a:hover {
background-color: #333;
}
问题是,一旦动画结束,如果我们返回到那个元素,悬停效果就不会再应用了。
任何线索为什么?
我试图像这样在脚本上“强制”夸大其词:
$('#container section').each(function() {
$(this).waypoint(function(direction) {
var anchorRef = 'a[href="#' + this.id + '"]';
var anchorRefHover = 'a[href="#' + this.id + '"]:hover';//NEW
if (direction === 'down') {
$(anchorRef).animate({'backgroundColor' : 'rgb(230, 77, 78)'});
$(anchorRefHover).css({backgroundColor : '#333'});//NEW
} else {
$(anchorRef).animate({'backgroundColor' : 'rgb(25, 25, 25)'});
$(anchorRefHover).css({backgroundColor : '#333'});//NEW
}
});
});
仍然失去了 CSS 上的悬停效果市场。
我在 CSS 悬停规则上添加了 !important。这会触发悬停。但是我更喜欢使用 javascript 的原因是, 悬停背景颜色应该只适用于我们悬停的元素没有背景 rgb(230, 77, 78)
不确定它是否会起作用,但我正在考虑在上述情况下通过 javascript 添加 !important ......但也许有更好的方法?
有什么线索可以帮助我吗?
注意:感谢 koala_dev efford,这是小提琴: