javascript - 选择性页面无限滚动

标签 javascript ruby-on-rails will-paginate

我使用以下 JavaScript 在多个页面上实现了无限滚动,效果很好。

$(document).ready(function() {
  if ($('.pagination').length) {
    $(window).scroll(function() {
      var url = $('.pagination .next_page').attr('href');
      if (url && $(window).scrollTop() > $(document).height() - $(window).height() - 50) {
        $('.pagination').text("Please Wait...");
        return $.getScript(url);
      }
    });
    return $(window).scroll();
  }
});

这位于我的 application.js 文件中。

我刚刚意识到我在其他页面上有一些分页链接,我不希望有无休止的滚动,但它们被替换为“请稍候...”

是否可以仅在某些页面或 Controller 上激活上述代码?

最佳答案

给你的will_paginate一个唯一的#id,这样他们就不会全部使用.pagination,这就是其他无尽滚动的原因正在附加“请稍候”。

示例:

<%= will_paginate @posts, :params => {:controller => 'posts', :action => 'index'}, id: "posts_pagination"%>

在这里您还可以了解如何将 will_paginate 委托(delegate)给特定的 Controller 和操作。

will_paginate doesn't always play ball with adding an #id so you might want to try and add a .class instead:

<%= will_paginate @posts, :params => {:controller => 'posts', :action => 'index'}, class: "posts_pagination"%>

然后在您的 application.js 中 - 将 infinity-script 绑定(bind)到 #posts-pagination (如果 #id)或 .posts_pagination(如果.class)而不只是.pagination:

最喜欢的 我使用以下 javascript 在多个页面上实现了无限滚动,效果很好。

$(document).ready(function() {
  if ($('.posts-pagination').length) {
    $(window).scroll(function() {
      var url = $('.posts-pagination .next_page').attr('href');
      if (url && $(window).scrollTop() > $(document).height() - $(window).height() - 50) {
        $('.posts-pagination').text("Please Wait...");
        return $.getScript(url);
      }
    });
    return $(window).scroll();
  }
});

您可能需要根据您的具体情况为 url 提供一个唯一变量,以便每个无限滚动都不会获取另一个无限滚动的 url

只需更改 var url = $('.posts-pagination .next_page').attr('href');

至:

var url1 = $('.posts-pagination .next_page').attr('href');

var url2 = $('.comments-pagination .next_page').attr('href');

等等。

瞧。你可以走了。

关于javascript - 选择性页面无限滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540033/

相关文章:

javascript - Angularjs 处理元素上的点击操作

javascript - angularjs:将过滤后的数组传递给指令

javascript - 如何在不使用 DOM 突变事件的情况下检测 AJAX 节点插入?

ruby-on-rails - 您会为 rails/grails 应用程序推荐什么建模技术/工具/图表?

mysql - Rails 中区分大小写的查找

javascript - 100% 窗口的背景图像(并随之调整大小)

ruby-on-rails - 可选的密码确认 Authlogic

ruby-on-rails-3 - 如何阻止 will_paginate 从数据库获取每个帖子

ruby-on-rails - js.erb 文件中的 if 语句基于 param_name will_paginate (Ajax 调用)

ruby - will_paginate 助手在 sinatra 和 mongoid 中未定义