我想我已经接近了,但我在尝试完成这一点时遇到了麻烦。基本上,当您向下滚动到每个图像时,包含该图像与窗口顶部的偏移量(-500 作为缓冲区)的 div 将向.selected
左侧的列表元素添加一个类。
http://jsfiddle.net/H6RTs/是我的例子
这是基本上发生魔术的代码(有点):
$(window).bind('scroll', function() {
// What the current px is from vertical scroll
var scrollY = window.pageYOffset;
// They scrolled more than the original offset
if (scrollY > menuTop) {
if (menuClone.parent().length === 0) {
$('#js-current-products').each(function(index, value) {
var newIndex = index + 1;
var currentProduct = $('.js-current-product-' + newIndex).offset().top - 500;
if (scrollY > currentProduct) {
$('.js-product-' + newIndex).addClass('selected');
}
});
stickyDiv.addClass(posFixed).width(clonedWidth);
menuClone.after(stickyDiv.parent());
}
} else {
$('#js-product-menu li').first().removeClass('selected');
stickyDiv.removeClass(posFixed);
menuClone.remove();
}
});
它将类添加到第一个列表项,而不是其他列表项(所以我猜它会一直关注$('.js-current-product-1')
而不是遍历所有列表项(这将是 3)。
我究竟做错了什么?