使用jQuery或者原生js實現(xiàn)鼠標滾動加載頁面新數(shù)據(jù)
相信很多人都見過瀑布流圖片布局,那些圖片是動態(tài)加載出來的,效果很好,對服務(wù)器的壓力相對來說也小了很多,用鼠標操作的時候相信都見過這樣的效果:進入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+CSS3折疊卡片式下拉列表框?qū)崿F(xiàn)效果
這是一款使用jQuery和CSS3制作的效果非常炫酷的折疊卡片式下拉列表框特效,感興趣的小伙伴們可以參考一下2015-11-11
一句jQuery代碼實現(xiàn)返回頂部效果(簡單實用)
本文主要分享了利用一句jQuery代碼實現(xiàn)返回頂部效果的實例。代碼簡單,保存到HTML文件就可以體驗效果。下面跟著小編一起來看下吧2016-12-12
網(wǎng)頁下載文件期間如何防止用戶對網(wǎng)頁進行其他操作
網(wǎng)頁下載文件時需要一段時間,在這期間如何防止用戶對網(wǎng)頁進行其他操作,將div覆蓋在網(wǎng)頁上,將網(wǎng)頁鎖住,具體實現(xiàn)如下2014-06-06
淺談jquery回調(diào)函數(shù)callback的使用
這篇文章主要簡單介紹了jquery回調(diào)函數(shù)callback的使用,需要的朋友可以參考下2015-01-01

