JQuery插件:iScroll
页面布局:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
< div id = "wrapper" > < div id = "scroller" > < div id = "pullDown" > < span class = "pullDownIcon" ></ span >< span class = "pullDownLabel" >下拉刷新...</ span > </ div > < ul id = "thelist" > < li > < img src = "img/page1_img1.jpg" /> </ li > < li > < img src = "img/page1_img2.jpg" /> </ li > < li > < img src = "img/page1_img3.jpg" /> </ li > < li > < img src = "img/page1_img1.jpg" /> </ li > < li > < img src = "img/page1_img2.jpg" /> </ li > < li > < img src = "img/page1_img3.jpg" /> </ li > </ ul > < div id = "pullUp" > < span class = "pullUpIcon" ></ span >< span class = "pullUpLabel" >上拉加载更多...</ span > </ div > </ div > |
翻页,是通过ajax请求,把页码传入一般处理程序,在一般处理程序中获得分页后的数据返回json数组对象。
下拉刷新:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/** * 下拉刷新 (自定义实现此方法) * myScroll.refresh(); // 数据加载完成后,调用界面更新方法 */ function pullDownAction() { setTimeout( function () { var el, li, i; el = document.getElementById( 'thelist' ); //========================================== $.ajax({ type: "GET" , url: "LoadMore.ashx" , data: { page: generatedCount }, dataType: "json" , success: function (data) { var json = data; $(json).each( function () { li = document.createElement( 'li' ); // li.innerText = 'Generated row ' + (++generatedCount); li.innerHTML = '<img src="' + this .src + '"/>' ; el.insertBefore(li, el.childNodes[0]); }) } }); myScroll.refresh(); //数据加载完成后,调用界面更新方法 Remember to refresh when contents are loaded (ie: on ajax completion) }, 1000); // <-- Simulate network congestion, remove setTimeout from production! } |
上拉加载更多
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
function pullUpAction() { setTimeout( function () { var el, li, i; el = document.getElementById( 'thelist' ); //========================================== $.ajax({ type: "GET" , url: "LoadMore.ashx" , data: { page: generatedCount }, dataType: "json" , success: function (data) { var json = data; $(json).each( function () { li = document.createElement( 'li' ); // li.innerText = 'Generated row ' + (++generatedCount); li.innerHTML = '<img src="' + this .src + '"/>; el.insertAfter(li, el.childNodes[0]); }) } }); //============================================ myScroll.refresh(); // 数据加载完成后,调用界面更新方法 Remember to refresh when contents are loaded (ie: on ajax completion) }, 1000); // <-- Simulate network congestion, remove setTimeout from production! } |
初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/** * 初始化iScroll控件 */ function loaded() { pullDownEl = document.getElementById( 'pullDown' ); pullDownOffset = pullDownEl.offsetHeight; pullUpEl = document.getElementById( 'pullUp' ); pullUpOffset = pullUpEl.offsetHeight; myScroll = new iScroll( 'wrapper' , { scrollbarClass: 'myScrollbar' , /* 重要样式 */ useTransition: false , topOffset: pullDownOffset, onRefresh: function () { if (pullDownEl.className.match( 'loading' )) { pullDownEl.className = '' ; pullDownEl.querySelector( '.pullDownLabel' ).innerHTML = '下拉刷新...' ; } else if (pullUpEl.className.match( 'loading' )) { pullUpEl.className = '' ; pullUpEl.querySelector( '.pullUpLabel' ).innerHTML = '上拉加载更多...' ; } }, onScrollMove: function () { if ( this .y > 5 && !pullDownEl.className.match( 'flip' )) { pullDownEl.className = 'flip' ; pullDownEl.querySelector( '.pullDownLabel' ).innerHTML = '松手开始更新...' ; this .minScrollY = 0; } else if ( this .y < 5 && pullDownEl.className.match( 'flip' )) { pullDownEl.className = '' ; pullDownEl.querySelector( '.pullDownLabel' ).innerHTML = '下拉刷新...' ; this .minScrollY = -pullDownOffset; } else if ( this .y < ( this .maxScrollY - 5) && !pullUpEl.className.match( 'flip' )) { pullUpEl.className = 'flip' ; pullUpEl.querySelector( '.pullUpLabel' ).innerHTML = '松手开始更新...' ; this .maxScrollY = this .maxScrollY; } else if ( this .y > ( this .maxScrollY + 5) && pullUpEl.className.match( 'flip' )) { pullUpEl.className = '' ; pullUpEl.querySelector( '.pullUpLabel' ).innerHTML = '上拉加载更多...' ; this .maxScrollY = pullUpOffset; } }, onScrollEnd: function () { if (pullDownEl.className.match( 'flip' )) { pullDownEl.className = 'loading' ; pullDownEl.querySelector( '.pullDownLabel' ).innerHTML = '加载中...' ; pullDownAction(); // Execute custom function (ajax call?) } else if (pullUpEl.className.match( 'flip' )) { pullUpEl.className = 'loading' ; pullUpEl.querySelector( '.pullUpLabel' ).innerHTML = '加载中...' ; pullUpAction(); // Execute custom function (ajax call?) } } }); setTimeout( function () { document.getElementById( 'wrapper' ).style.left = '0' ; }, 800); } //初始化绑定iScroll控件 document.addEventListener( 'touchmove' , function (e) { e.preventDefault(); }, false ); document.addEventListener( 'DOMContentLoaded' , loaded, false ); |