javascript - 如何在无限滚动加载新页面后请求类似 Tumblr 的按钮状态

标签 javascript jquery ajax tumblr infinite-scroll

这是 Tumblr 文档中的说明:

Tumblr.LikeButton.get_status_by_page(n):请求新的帖子页面后调用此函数。将刚刚加载的页码作为整数。

Tumblr.LikeButton.get_status_by_post_ids([n,n,n]):请求单个帖子的“赞”状态。获取帖子 ID 数组。

这个问题已被问过几次并提供解决方案 herehere这两个答案都可以告诉您如何使用帖子 ID 请求“赞”按钮状态。那么有没有更简单、可能更快的解决方案呢?

I'll share how i do it, please share your opinions too.

最佳答案

接受的答案中发生了什么 here是:

  1. 首先,您必须为所有帖子提供 ID。
  2. 加载新帖子后,查找类为 (.post) 的所有元素(帖子)。
  3. 获取新帖子的 ID。
  4. 请求类似按钮状态以及新帖子 ID 数组

现在,您可以在新页面加载页码后请求类似按钮的状态。

  1. 首先获取页面中帖子的数量。
  2. 加载新帖子后再次获取帖子数量。
  3. 将当前帖子数除以初始帖子数即可得到页码。
  4. 请求类似按钮状态和页码。

        var $initialNumberOfPosts = $('.post').length; // Get number of posts
    
        $('#posts').infinitescroll({
          loading: {
            msgText: "Loading..",
            img: "/loading_image.gif",
            finishedMsg: "End!"
          },
            navSelector  : "#pagination",
            nextSelector : "#nextpage",
            itemSelector: ".post"
        },
        function(newElements) {
    
            var $currentNumberOfPosts = $('.post').length; // Get current number of posts
    
            var pageNumber = Math.ceil($currentNumberOfPosts / $initialNumberOfPosts); // Get page number
    
            Tumblr.LikeButton.get_status_by_page(pageNumber); // Request like button status
        });
    

*使用 (.ceil),因为用户可能在每页选择 15 个帖子,但可能少于最后一页的帖子数。

更新:2014 年 3 月 5 日。

他们有更简单的方法来使用 Tumblr 变量获取页码并在新页面加载时增加页码。请尝试以下操作:

  1. 首先使用 Tumblr 变量获取页码:{CurrentPage}。
  2. 加载新页面后增加当前页码。
  3. 请求类似按钮状态以及当前页码。

        var pageNumber = {CurrentPage}; // Get current Page number ( Will not work in external file)
    
        $('#posts').infinitescroll({
          loading: {
            msgText: "Loading..",
            img: "/loading_image.gif",
            finishedMsg: "End!"
          },
            navSelector  : "#pagination",
            nextSelector : "#nextpage",
            itemSelector: ".post"
        },
        function(newElements) {
    
            pageNumber++; // Get page number after new page is loaded.
    
            Tumblr.LikeButton.get_status_by_page(pageNumber); // Request like button status
        });
    

//结束更新。

*这是一个示例脚本,说明如何使用 Paul Irish 的无限滚动来请求类似按钮状态。

因此,这两种方式大约需要 3 - 4 个步骤。我的解决方案似乎更容易设置,所以我使用它。您可以使用您认为更好的东西。

我认为我的解决方案更快,因为它使用简单的函数,但这正是我的想法;我现在没有任何证据。谢谢!

关于javascript - 如何在无限滚动加载新页面后请求类似 Tumblr 的按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789608/

相关文章:

javascript - JS : How to exclude a range of values whilst using Math. 随机()?

Javascript - 检查对象属性存在时避免异步竞争条件

javascript - 无法获取全局变量

jQuery - not() 不适用于元素上新添加的类

javascript - 重定向不起作用/警报无显示

javascript - jQuery ajax 在特定 url 上发送之前覆盖数据/url

javascript - 由于 AngularJS 的 IE 缓存,我必须单击两次才能添加/删除项目

javascript - 在 mvc razor 中使用 ajax 从其中的另一个部分 View 提交表单后,无法刷新部分 View

javascript - jQuery Ajax PHP 数组空白响应没有错误

javascript - 如何使用纯javascript将xhr请求存储在缓存中