运行自定义jquery函数后出现意外行为

时间:2016-09-04 09:55:17

标签: javascript jquery

我的脚本中确实有一个小错误,我不知道如何解决。

这里的所有内容都按预期工作,但是当我点击#backtop并且文档滚动到顶部并再次设置display' : 'block时。

请有人请解释如何防止这种情况。 非常感谢。

$(function () {

  var didScroll;
  var scrolled = 0;
  var trigger = 900;

  $(window).scroll(function () {
    didScroll = true;
  });

  function hasScrolled() {
    //store scroll position in var
    var store = $(this).scrollTop();
    if (scrolled < trigger) {
      $('#backtop').css({'display': 'none'});
    } else {
      $('#backtop').css({'display': 'block'});
    }
    scrolled = store;
    console.log('run')
  }

  setInterval(function () {
    if (didScroll) {
      hasScrolled();
      didScroll = false;
    }
  }, 1000);

  $('#backtop').on('click', function (e) {
    e.preventDefault();
    $('html, body').animate({
      scrollTop: $('#sec-1').offset().top
    }, 'slow');
    $('#backtop').css({'display': 'none'});
  });

});

编辑: 小提琴:https://jsfiddle.net/107qs76o/

1 个答案:

答案 0 :(得分:0)

您在计算后分配了滚动值。它应该在计算之前。即。

res