使用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為內(nèi)容可視區(qū)域的高度。
- scrollHeight為內(nèi)容可視區(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); }); } }
- jquery實現(xiàn)表格無縫滾動
- Jquery原生態(tài)實現(xiàn)表格header頭隨滾動條滾動而滾動
- asp.net+jquery滾動滾動條加載數(shù)據(jù)的下拉控件
- jquery滾動組件(vticker.js)實現(xiàn)頁面動態(tài)數(shù)據(jù)的滾動效果
- 基于jquery實現(xiàn)頁面滾動到底自動加載數(shù)據(jù)的功能
- js/jquery控制頁面動態(tài)加載數(shù)據(jù) 滑動滾動條自動加載事件的方法
- jquery滾動加載數(shù)據(jù)的方法
- Jquery公告滾動+AJAX后臺得到數(shù)據(jù)
- 拉動滾動條加載數(shù)據(jù)的jquery代碼
- jQuery實現(xiàn)表格行數(shù)據(jù)滾動效果
相關(guān)文章
jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts繪制2D柱狀圖、折線圖的組合雙軸圖效果,結(jié)合實例形式分析了jQuery使用HighCharts插件同時繪制柱狀圖、折線圖的組合雙軸圖實現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03基于jquery實現(xiàn)后臺左側(cè)菜單點擊上下滑動顯示
一個左側(cè)菜單點擊是可以上下滑動,簡潔時尚,復制即可使用,感興趣的朋友可以參考下哈,希望對你有所幫助2013-04-04jQuery使用ajax跨域獲取數(shù)據(jù)的簡單實例
下面小編就為大家?guī)硪黄猨Query使用ajax跨域獲取數(shù)據(jù)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05PHP結(jié)合jQuery實現(xiàn)紅藍投票功能特效
本文給大家分享的是jQuery + PHP+mysql完成的投票程序,功能不是太復雜,主要是效果非常不錯,有需要的小伙伴可以參考下2015-07-07jQueryeasyui 中如何使用datetimebox 取兩個日期間相隔的天數(shù)
這篇文章主要介紹了jQueryeasyui 中使用datetimebox 取兩個日期間相隔的天數(shù),需要的朋友參考下吧2017-06-06手機移動端實現(xiàn) jquery和HTML5 Canvas的幸運大獎盤特效
這篇文章主要介紹了手機移動端實現(xiàn) jquery和HTML5 Canvas的幸運大獎盤特效的相關(guān)資料,這里附有實現(xiàn)代碼及實現(xiàn)效果圖,需要的朋友可以參考下2016-12-12解決Jquery下拉框數(shù)據(jù)動態(tài)獲取的問題
下面小編就為大家分享一篇解決Jquery下拉框數(shù)據(jù)動態(tài)獲取的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01