jquery waypoints 和 .scroll() 冲突

jquery waypoints and .scroll() conflict

这是我的 JS 代码:

$(window).scroll(function (event) {
    var scrollTop = $(window).scrollTop();
    var height = $(window).height();
    var opacity = ((height - scrollTop) / height);
    var scale = ((height - (scrollTop/10)) / height);
    console.log(opacity);
    if(opacity>=0.05){
        $.each(links, function( i, link ) {
            $(link).css({
                'opacity': opacity,
             });
        })} else {
            $(link).css({
                'opacity': 0.05
            });
        }
    if(scale>=0.9){
         $('#index').css({
            'transform': 'scale('+scale+')'
         });
    } else {
        $('#index').css({
            'transform': 'scale(0.9)'
        });
    }
});
$( document ).ready(function() {
    $('#aboutContent').waypoint(function(direction) {
        alert('hit!'); 
    });
});

.scroll() 函数完全符合我的要求,但航路点根本不起作用。但是,如果我删除了 .scroll() 函数,则航路点将正常工作。任何人都可以发现可能导致问题的原因吗?我找不到 .scroll() 和 waypoints 之间的任何已知冲突。这是一个 JSFiddle:https://jsfiddle.net/zocdvefx/ 如果你删除 .scroll() 函数,路点应该可以工作。

谢谢! 杰米

在你的 fiddle 中,问题出在这个 if-else 块中:

if (opacity >= 0.05) {
  $.each(links, function(i, link) {
    $(link).css({
      'opacity': opacity,
    });    
  })
} else {
  $(link).css({ // <-- link is no longer in scope and is undefined 
    'opacity': 0.05
  });
}

将我在上面突出显示的行中的 link 更改为 links 将解决您的问题。

为了将来参考,当您 运行 遇到问题时,请始终检查浏览器的开发人员控制台(通常是 F12)。我在您的 jsfiddle 中打开它后,它立即开始告诉我问题出在哪里:ReferenceError: link is not defined.