javascript - 防止 window.scroll 处理程序保留到其他页面

标签 javascript jquery

我的页面上有以下无限滚动功能。似乎一旦我进入一个触发 if 语句的页面,之后我进入的每个页面都会继续触发滚动处理程序。我知道这一点是因为每次我滚动时,每个其他页面都会将“窗口滚动”打印到控制台,但不会触发“if 语句 true”。如何使 window.scroll 只在带有 #infinite-scrolling 的页面上工作?

function initPagination() {
  var paginate = function(buttonPress) {
    var url = $('.pagination .next_page').attr('href');

    if (buttonPress || (url && $(window).scrollTop() > $(document).height() - $(window).height() - 60)) {
      // TODO - Removing this line was causing duplicates to load so it's worth investigating the cause
      $('.pagination').html('Please Wait...');
      return $.getScript(url);
    }
  };

  if ($('#infinite-scrolling').length) {
    console.log('if statement true');
    $(window).scroll(function() {
      console.log('window scroll');
      paginate(false);
    });
    return $(window).scroll();
  }

  $('#infinite-scrolling-button').on('click', function() {
    $(this).html('Loading...');
    paginate(true);
    $(this).html('Load more');
  });
}

编辑:部分问题可能与涡轮链接有关。当我刷新页面时,滚动处理程序似乎不再触发。

最佳答案

当您希望页面自动滚动时,窗口滚动事件监听器会被设置,但当页面由于涡轮链接的行为而发生更改时,它不会被取消设置。尝试使用 $(window).unbind("scroll"); 在新页面加载时消除滚动事件。

关于javascript - 防止 window.scroll 处理程序保留到其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123640/

相关文章:

javascript - 更改数据表中使用的参数 ajax url.Action on Ajax.reload

javascript - MongoDB "Failed to query for documents to update ... unable to decode message length: EOF"

javascript - 将有选项显示图像而不是 Bootstrap 多选中的选定文本

php - 在 PHP 表单中创建具有自动完成功能的输入字段

javascript - 选择器的 jQuery 奇怪问题

javascript - 如何使用 jquery 显示/隐藏特定的多级嵌套 div?

javascript - 将箭头键设置为全局以实现可访问性

javascript - 第二次搜索后维基百科查看器结果重复

jQuery 插件 'this.each is not a function'

javascript - 删除并添加 CSS 文件