使用jQuery或者原生js實現(xiàn)鼠標滾動加載頁面新數(shù)據(jù)
來源:易賢網 閱讀:764 次 日期:2016-08-02 14:14:35
溫馨提示:易賢網小編為您整理了“使用jQuery或者原生js實現(xiàn)鼠標滾動加載頁面新數(shù)據(jù)”,方便廣大網友查閱!

相信很多人都見過瀑布流圖片布局,那些圖片是動態(tài)加載出來的,效果很好,對服務器的壓力相對來說也小了很多,用鼠標操作的時候相信都見過這樣的效果:進入qq空間,向下拉動空間,到底部時,會動態(tài)加載剩余的說說或者是日志 ,今天我們就來看看他們的實現(xiàn)思路和js控制動態(tài)加載的代碼。

下面的代碼主要是控制滾動條下拉時的加載事件的,無論是加載圖片還是加載記錄數(shù)據(jù)  都可以。

加載jQuery庫后我們可以這樣使用:  

$(window).scroll(function () {

    var scrollTop = $(this).scrollTop();

    var scrollHeight = $(document).height();

    var windowHeight = $(this).height();

    if (scrollTop + windowHeight == scrollHeight) {

   //此處是滾動條到底部時候觸發(fā)的事件,在這里寫要加載的數(shù)據(jù),或者是拉動滾動條的操作

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

//redgiftList(page);

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

    }

  });

解析:

判斷滾動條到底部,需要用到DOM的三個屬性值,即scrollTop、clientHeight、scrollHeight。

scrollTop為滾動條在Y軸上的滾動距離。

clientHeight為內容可視區(qū)域的高度。

scrollHeight為內容可視區(qū)域的高度加上溢出(滾動)的距離。

從這個三個屬性的介紹就可以看出來,滾動條到底部的條件即為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); 

    }); 

   } 

  }

更多信息請查看網絡編程
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網