页面滚动到底部自动 Ajax 获取文章

 代码如下 复制代码

var _timer = {};
function delay_till_last(id, fn, wait) {
    if (_timer[id]) {
        window.clearTimeout(_timer[id]);
        delete _timer[id];
    }
 
    return _timer[id] = window.setTimeout(function() {
        fn();
        delete _timer[id];
    }, wait);
}
 
$(document).ready(function() {
    var Ajax_Url = null;
    $(window).scroll(function(){
        delay_till_last('scroll_Ajax', function(){
            if($(window).scrollTop() >= $(document).height() - $(window).height() - 80){ //如果你没有底部固定栏可以把 80 适当减少
                Ajax_Url = $(".nextpage a").attr("href");//一个隐藏 a 标签储存下一页要拉取的链接
                if( Ajax_Url ){
                    $.ajax({
                        type: "GET",
                        url: Ajax_Url,
                        success: function(data){
                            $(".nextpage").remove();
                            $(".postlist").append(data);
                        },
                        error: function(data){
                            $(".postlist").after('<div id="ajax-list-error">文章获取失败</div>');
                        }
                    });
                }else{
                    ajax_load_hide();
                    $("#ajax-list-error").remove();
                    $(".postlist").after('<div id="ajax-list-error">全部文章已加载完毕,没有更多的文章了~</div>');
                }
            }
        }, 100);
    });
});

一开始的 delay_till_last 函数用来防止事件重复触发,也就是重复的内容加载好多遍。

.postlist 为文章 li 的 ul,有两处注意修改。

改造主循环,现在 function.php 里放一个函数

 代码如下 复制代码

//Ajax Get List
function Bing_is_ajax_list(){
  if( isset($_GET["action"]) && $_GET["action"] == "ajax_list" ) return false;
  return trun;
}

Bing_is_ajax_list() 可以判断是否为 Ajax 请求,返回假为 Ajax

主循环:

 代码如下 复制代码

wp_reset_query();
if( have_posts() ):
 if( Bing_is_ajax_list() ) echo '<ul class="postlist">';
 while( have_posts() ):
  the_post();
  //文章样式,我用的一个函数
  Bing_postlist_li();
 endwhile;
 if( Bing_is_ajax_list() ) echo '</ul>';
 echo '<div class="nextpage">';
  next_posts_link( '' );
 echo '</div>';
endif;

最后记得用 Bing_is_ajax_list() 判断,让为假(Ajax 请求)的时候把包括和文章列表 ul 标签自身给去掉,只加载一堆 li

页面滚动到底部自动 Ajax 获取文章的更多相关文章

  1. jquery 页面滚动到底部自动加载插件集合

    很多社交网站都使用无限滚动的翻页技术来提高用户体验,当你页面滑到列表底部时候无需点击就自动加载更多的内容.下面为你推荐 10 个 jQuery 的无限滚动的插件: 1. jQuery ScrollPa ...

  2. 随着页面滚动,数字自动增大的jquery特效

    首先为了截出gif图,我下载了一个小工具 GifCam: https://www.appinn.com/gifcam/ 随着页面滚动,数字自动增大的jquery特效 主要就是依赖这个脚本script. ...

  3. jquery 判断页面滚动到底部

    $(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离$(document).scrollLeft() 这是获取水平滚动条的距离获取顶端 只 ...

  4. jquery让页面滚动到底部

    function scrollToEnd(){//滚动到底部 var h = $(document).height()-$(window).height(); $(document).scrollTo ...

  5. jquery使页面滚动到底部

    function scrollToEnd(){//滚动到底部 var h = $(document).height()-$(window).height(); $(document).scrollTo ...

  6. Jquery滚动到页面底部自动Ajax加载图文列表,类似图片懒加载效果,带加载效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Layman H5+Webapp+MUI App 页面滑至到底部自动加载新的内容

    要点:使用jquery的scroll()方法实现,当用户滚动指定的元素时,会发生 scroll 事件 scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口) scroll() 方 ...

  8. [页面滚动到底部]jquery $(window).height()取值等于$(document).height()的问题

    问题现象:JSP中头部引用了某个head.jsp,在videoList.jsp中生成片段时如下 实际最终生成的HTML如下: <!DOCTYPE html>没有解析到,原因找到了,先想办法 ...

  9. JS监听页面滚动到底部事件

    废话不说,直接上代码,放心我这个是最好的,直接放到js脚本里,直接生效: $(window).scroll(function(){ var scrollTop = $(this).scrollTop( ...

随机推荐

  1. windows批处理运行java程序

    明确需求 今天你编了一个java swing版照片查看器,想让计算机上的所有照片默认打开方式都改成你的照片查看器. 使用工具软件 很多工具软件都是不把jre打包到exe中的,这就是说打包之后的exe只 ...

  2. AngularJS的基础元素应用

    <!doctype html> <!-- 标记ng-app告诉AngularJS处理整个HTML页并引导应用 --> <html ng-app> <head& ...

  3. JS常用正则表达式

    1.IP地址验证 var reg = /^(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))\.(([0-9])|([1-9][0 ...

  4. How to Disable Strict SQL Mode in MySQL 5.7

    If your app was written for older versions of MySQL and is not compatible with strict SQL mode in My ...

  5. Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别

    ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 fram ...

  6. vmware Centos6.6安装64位

    Centos6.6安装64位 必须开启BIOS中的虚拟化技术 首先开机进入BIOS,一般机器是按F2,我的T420是按F1,然后进入Security,Virtualization,选择Enable即可 ...

  7. mybatis-generator指定列进行自动生成代码

    目前mybatis-generator已经升级到1.3.3,功能比较强大,但是目前从table中如果字段较多可以选择忽略生产的字段(通过ignoreColumn属性实现,http://generato ...

  8. Zabbix客户端安装

    CentOS 7 [root@localhost /]# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3 ...

  9. 2016福州大学软件工程第五、六次团队作业-Alpha阶段成绩汇总

    1.本次作业成绩统计结果: 本次Alpha阶段团队作业公布如下: 表格说明: PE:贡献百分比 YS:演示评分(满分15分) BK:博客评分(满分15分) SH:事后诸葛亮环节(满分5分) P:个人分 ...

  10. 加密算法中BASE64、MD5、SHA、HMAC等之间的区别

    http://blog.csdn.net/lplj717/article/details/51828692 根据项目需要了解了一下几种加密算法(参考其他博客),内容简要介绍BASE64.MD5.SHA ...