选择性页面无休止滚动

时间:2017-08-07 05:38:18

标签: 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文件中。

我刚刚意识到我在其他页面上有一些分页链接,我不希望无限滚动但是它们被替换为"请等待..."

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

1 个答案:

答案 0 :(得分:0)

为您的will_paginate提供一个唯一的#id,以便他们不会全部使用.pagination,这就是其他无限卷轴附加“请等待”的原因。

示例:

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

在这里,您还可以看到如何将will_paginate委派给某个控制器和操作。

  

will_paginate并不总是在添加#id的情况下发挥作用,所以你可能会这样做   想要尝试添加.class代替:

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

然后在您的application.js中 - 将无限脚本绑定到#posts-pagination(如果#id)或.posts_pagination(如果.class)而非.pagination {1}}:

喜爱 我使用以下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');

等等。

瞧瞧。你很高兴。