加载更多
2017-07-04 本文已影响0人
Eazer
html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>
加载更多
</title>
<style>
ul,li{
margin: 0;
padding: 0
}
#ct li{
text-align: center;
list-style:none;
border: 1px solid #ccc;
padding: 10px;
margin-top: 10px;
cursor:pointer;
}
#load-more{
display: block;
margin: 10px auto;
text-align: center;
cursor: pointer;
}
#load-more img{
width: 40px;
height: 40px;
}
.btn{
display: inline-block;
height: 40px;
line-height: 40px;
width: 80px;
border: 1px solid #E27272;
border-radius: 3px;
text-align: center;
text-decoration: none;
color: #E27272;
}
#ct li.hover{
background:#fed136;
color:#fff;
}
.text{
text-align: center;
}
</style>
</head>
<body>
<ul id="ct">
</ul>
<a id="load-more" class="btn" href="#">
加载更多
</a>
<p class="text"></p>
</body>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<script>
var $loadMoreBtn = $('#load-more'),
$ct = $('#ct');
$ct.on('mouseover','li',function(){
$(this).addClass('hover')
});;
$ct.on('mouseout','li',function(){
$(this).removeClass('hover');
});
var pageIndex = 0;
$loadMoreBtn.on('click', function(){
if($(this).data('isLoading')){ //获取一个状态锁
return;
}
$(this).data('isLoading', true) //设置一个状态锁,防止在加载的数据回来之前用户多次点击
.html('![](loading.gif)'); //链式调用,换行也没关系,对齐好看些
$.get('/getNews',{page:pageIndex}).done(function(ret){
pageIndex++;
appendHtml(ret);
$loadMoreBtn.data('isLoading', false)
.text('加载更多'); //链式调用,换行也没关系,对齐好看些
console.log(pageIndex)
}).fail(function(){
$loadMoreBtn.data('isLoading', false)
.text('加载更多'); //链式调用,换行也没关系,对齐好看些
alert('系统异常');
})
});
function appendHtml(news){
console.log(news)
if(news.length === 0){
$('#load-more').remove();
$('.text').text('没有数据了');
return;
}else{
var html = '';
$.each(news, function(){
html = '<li>' + this.title + '</li>'
$('ul').append(html);
})
}
}
</script>
</html>
server-mock模拟后端代码
app.get('/getNews', function(req, res){
var news = [
{
title: '内容1'
},
{
title: '内容2'
},
{
title: '内容3'
},
{
title: '内容4'
},
{
title: '内容5'
},
{
title: '内容6'
},
{
title: '内容7'
},
{
title: '内容8'
}
];
var page = req.query.page;
var length = 2;
var retnews = news.slice(page*length, page*length+length);
setTimeout(function(){
res.send(retnews);
}, 1000)
})
lodaing
动态加载
【个人总结,如有错漏,欢迎指出】
:>