如何在新页面加载无限滚动后请求Tumblr像按钮状态

时间:2013-12-26 18:45:54

标签: 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请求类似按钮状态。那么有一个更简单,可能更快的解决方案吗?

  

我将分享我是如何做到的,请分享您的意见。

1 个答案:

答案 0 :(得分:3)

接受的答案here中发生的事情是:

  1. 首先,您必须为所有帖子提供ID。
  2. 加载新帖子后,找到所有带有类(.post)的元素(帖子)。
  3. 获取新帖子的ID。
  4. 请求具有新帖子ID数组的按钮状态
  5. 现在,您可以在新页面加载页码后请求类似按钮状态。

    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
          });
      
    5. *使用(.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
            });
        
      4. //结束更新。

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

        所以在这两方面,它大致是3-4步。我的解决方案似乎更容易为我设置,所以我使用它。你可以使用对你来说更好的东西。

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