使用jQuery或者原生js实现鼠标滚动加载页面新数据_jquery

相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多,用鼠标操作的时候相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 ,今天我们就来看看他们的实现思路和js控制动态加载的代码。

下面的代码主要是控制滚动条下拉时的加载事件的,无论是加载图片还是加载记录数据  都可以。

加载jQuery库后我们可以这样使用:  

 $(window).scroll(function () {
    var scrollTop = $(this).scrollTop();
    var scrollHeight = $(document).height();
    var windowHeight = $(this).height();
    if (scrollTop + windowHeight == scrollHeight) {

   //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作

//var page = Number($("#redgiftNextPage").attr('currentpage')) + 1;
//redgiftList(page);
//$("#redgiftNextPage").attr('currentpage', page + 1);

    }
  });

解析:

判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

  • scrollTop为滚动条在Y轴上的滚动距离。
  • clientHeight为内容可视区域的高度。
  • scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。 

纯js我们可以这样做:

window.onscroll = function() {
   var scrollTop = document.body.scrollTop;
   var offsetHeight = document.body.offsetHeight;
   var scrollHeight = document.body.scrollHeight;
   if (scrollTop == scrollHeight - offsetHeight) {
    page++;
    loadList(page);
   }
  }; 

function loadList(page) {
   page = page || 1; 

   if (isLoad) {
    getJSON('/forum.php?mod=hot&page=' + page).then(function(data) {
     if (data.code == 200) {
      data = data.data;
      if (data && Object.keys(data).length > 0) {
       for (var k in data) {
        var v = data[k];
        detailTemplate = detailTemplate.cloneNode(true);
        var userInfoObj = detailTemplate.getElementsByClassName('user-info')[0];
        userInfoObj.getElementsByClassName('name')[0].innerText = v.author;
        userInfoObj.getElementsByClassName('avatar')[0].src = v.avatar;
        userInfoObj.getElementsByClassName('post-time')[0].innerHTML = v.lastpost;
        detailTemplate.getElementsByClassName('title')[0].innerText = v.subject;
        detailTemplate.getElementsByClassName('desc')[0].innerText = v.subject;
        var extInfoObj = detailTemplate.getElementsByClassName('ext-info')[0];
        extInfoObj.getElementsByClassName('from')[0].innerText = v.fname;
        extInfoObj.getElementsByClassName('view-time')[0].innerText = v.views;
        postListObj.appendChild(detailTemplate);
       }
      } else {
       isLoad = false;
      }
     } else {
      isLoad = false;
     }
    }, function(status) {
     console.log('Something went wrong, status is ' + status);
    });
   }
  }

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, jquery
, js
, 滚动加载
, 滚动
加载
jquery 鼠标滚动加载、原生js实现滚动加载、jquery 滚动加载、jquery滚动加载数据、jquery 鼠标滚动事件,以便于您获取更多的相关知识。

时间: 2024-12-03 21:27:10

使用jQuery或者原生js实现鼠标滚动加载页面新数据_jquery的相关文章

jQuery滚动加载图片实现原理_jquery

本文主要通过以下几方面来说明懒加载技术的原理,个人前端小菜,有错误请多多指出 一.什么是图片滚动加载? 通俗的讲就是:当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来.这就是图片懒加载. 二.为什要使用这个技术? 比如一个页面中有很多图片,如淘宝.京东首页等等,如果一上来就发送这么多请求,页面加载就会很漫长,如果js文件都放在了文档的底部,恰巧页面的

jQuery实现的自动加载页面功能示例_jquery

本文实例讲述了jQuery实现的自动加载页面功能.分享给大家供大家参考,具体如下: demo.html: <li style="opacity:0;-moz-opacity: 0;filter: alpha(opacity=0);"><p>---------------</p></li> <li style="opacity:0;-moz-opacity: 0;filter: alpha(opacity=0);"

jquery 实现滚动条下拉时无限加载的简单实例_jquery

思路: 通过捕捉浏览器滚动条下拉事件,触发异步加载数据的js方法,实现数据的动态添加. 脚本: var lastId=0;//记录每一次加载时的最后一条记录id,跟您的排序方式有关. var isloading = false; $(window).bind("scroll", function () { if ($(document).scrollTop() + $(window).height() > $(document).height() - 10 &&

jQuery实现彩带延伸效果的网页加载条loading动画_jquery

本文实例讲述了jQuery实现彩带延伸效果的网页加载条loading动画.分享给大家供大家参考,具体如下: 这里介绍的jQuery彩带效果网页加载条动画,我觉得挺有创意的,虽然难度不算大,但能想到用这样一个背景来做Loading加载条,也实属不易,不服气的,你为什么就没有想到这样做呢?本网页加载条效果使用了jQuery插件. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-n-color-cha-web-loading-demo/

jquery浏览器滚动加载技术实现方案_jquery

要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义.我觉得用户体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据.至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试-- 我试着用jquery来实现这个功能.先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性值:scrollTop.然后通过计算,若当前值位于总长值三分之二时加载新数据.假设DOM上有一个元素为<div id="mypage"

原生JS实现首页进度加载动画_javascript技巧

js进度加载动画程序是本人的个人作品,写的不好,可以参考,但未经本人允许,请不要用于其它用途!  早上写了个首页进度加载动画,本想在我的博客里用上,测试发现博客园加载太快,根本看不到动画效果,直接就加载'Complete'了,算了,还是不要把博客搞得太臃肿了!  于是我就写了个演示页面,在body里加了个iframe来加载大一点的网站,这样就看出效果了!  用Safari打开貌似CSS动画的播放时间变成同步了,不知道什么原因,本地测试又没问题(请大神指点!),用Chrome.Firefox倒是没

js ajax无刷新加载页面程序代码

js原生态写法  代码如下 复制代码 var mm;   var nn;   function makeRequest(url,obj,b) {   mm=obj;   nn=b;    http_request = false;    if (window.XMLHttpRequest) {     http_request = new XMLHttpRequest();     if (http_request.overrideMimeType){      http_request.ove

Jquery EasyUI中弹出确认对话框以及加载效果示例代码_jquery

复制代码 代码如下: //confirm function Confirm(msg, control) {    $.messager.confirm("确认", msg, function (r) {        if (r) {            return true;        }    });    return false;} 复制代码 代码如下: //Loadfunction Load() {    $("<div class=\"da

原生javaScript实现图片延时加载的方法_javascript技巧

本文实例讲述了原生javaScript实现图片延时加载的方法.图片延时加载其实是有jquery插件了并且加载方法非常的简单并且合理了,但有朋友觉得加载jquery插件包太大了,于时自己写了一个,给各位分享一下. 首先,图片延时加载可以节省我们带宽,获取到更好的用户体验,尤其对于图片多的站点,这一点显得至关重要,下面就跟大家探讨一下图片延时加载原理和实现代码. 图片延时加载原理 图片延时加载原理是在html里面的图片src填的并不是真正的图片地址,而是以一种自定义属性把图片地址赋给img标签,如: