1
+ /*
2
+ * by zhangxinxu(.com) 2014-10-29
3
+ * https://github.com/zhangxinxu/mobilebone
4
+ * plugin for slide show
5
+ */
1
6
if ( window . Mobilebone && Mobilebone . support ) {
2
7
( function ( window , document , undefined ) {
3
8
var pages = document . querySelectorAll ( "." + Mobilebone . classPage ) ,
4
9
length_page = pages . length ;
5
10
index_page = 0 ,
6
11
hash = location . hash . replace ( "#&" , "" ) ;
7
-
12
+
13
+ // add pageid if don't exist
14
+ // and get the index of those pages
8
15
[ ] . slice . call ( pages ) . forEach ( function ( page , index ) {
9
16
if ( ! page . id ) page . id = "page" + ( index + 1 ) ;
10
17
@@ -13,14 +20,37 @@ if (window.Mobilebone && Mobilebone.support) {
13
20
}
14
21
} ) ;
15
22
23
+ // get prev slide-page
16
24
var prev = function ( ) {
17
- if ( index_page > 0 && Mobilebone . transition ( pages [ index_page - 1 ] , pages [ index_page ] , true ) !== false ) {
25
+ var pageout = pages [ index_page ] || null , pagein = pages [ index_page - 1 ] || null ;
26
+ if ( index_page > 0 && Mobilebone . transition ( pagein , pageout , true ) !== false ) {
27
+ // if there are no preventDefault, add page index
18
28
index_page -- ;
29
+ } else if ( index_page == 0 ) {
30
+ // first page, can't trigger inner animation by 'Mobilebone.preventdefault'
31
+ // so we need excute code as below
32
+ var eleins = pageout . querySelectorAll ( ".in" ) ;
33
+ if ( elein = eleins [ eleins . length - 1 ] ) {
34
+ elein . style . display = elein . getAttribute ( "data-display" ) || "block" ;
35
+ elein . classList . remove ( "in" ) ;
36
+ elein . classList . add ( "out" ) ;
37
+ }
19
38
}
20
- } , next = function ( ) {
21
- if ( index_page < length_page - 1 && Mobilebone . transition ( pages [ index_page + 1 ] , pages [ index_page ] ) !== false ) {
39
+ }
40
+ // get next slide-page
41
+ , next = function ( ) {
42
+ var pageout = pages [ index_page ] || null , pagein = pages [ index_page + 1 ] || null ;
43
+ if ( index_page < length_page - 1 && Mobilebone . transition ( pagein , pageout ) !== false ) {
22
44
index_page ++ ;
23
- }
45
+ } else if ( index_page == length_page - 1 ) {
46
+ // last page, can't trigger inner animation by 'Mobilebone.preventdefault'
47
+ // so we need excute code as below
48
+ var eleout = pageout . querySelector ( ".out" ) ;
49
+ if ( eleout ) {
50
+ eleout . classList . remove ( "out" ) ;
51
+ eleout . classList . add ( "in" ) ;
52
+ }
53
+ }
24
54
} ;
25
55
26
56
/*document.addEventListener("click", function(event) {
@@ -60,11 +90,13 @@ if (window.Mobilebone && Mobilebone.support) {
60
90
61
91
Mobilebone . preventdefault = function ( pagein , pageout ) {
62
92
if ( pageout == null ) return ;
93
+
63
94
var isBack = Mobilebone . isBack ( pagein , pageout ) ;
95
+
64
96
if ( isBack == true ) {
65
- var elein = pageout . querySelector ( ".in" ) ;
66
- if ( elein ) {
67
- elein . style . display = "block" ;
97
+ var eleins = pageout . querySelectorAll ( ".in" ) ;
98
+ if ( elein = eleins [ eleins . length - 1 ] ) {
99
+ elein . style . display = elein . getAttribute ( "data-display" ) || "block" ;
68
100
elein . classList . remove ( "in" ) ;
69
101
elein . classList . add ( "out" ) ;
70
102
return true ;
0 commit comments