@@ -10,7 +10,24 @@ https://github.com/imakewebthings/deck.js/blob/master/GPL-license.txt
10
10
This module adds clickable previous and next links to the deck.
11
11
*/
12
12
( function ( $ , deck , undefined ) {
13
- var $d = $ ( document ) ;
13
+ var $d = $ ( document ) ,
14
+
15
+ /* Updates link hrefs, and disabled states if last/first slide */
16
+ updateButtons = function ( e , from , to ) {
17
+ var opts = $ [ deck ] ( 'getOptions' ) ,
18
+ last = $ [ deck ] ( 'getSlides' ) . length - 1 ,
19
+ prevSlide = $ [ deck ] ( 'getSlide' , to - 1 ) ,
20
+ nextSlide = $ [ deck ] ( 'getSlide' , to + 1 ) ,
21
+ prevId = prevSlide ? prevSlide . attr ( 'id' ) : undefined ;
22
+ nextId = nextSlide ? nextSlide . attr ( 'id' ) : undefined ;
23
+
24
+ $ ( opts . selectors . previousLink )
25
+ . toggleClass ( opts . classes . navDisabled , ! to )
26
+ . attr ( 'href' , '#' + ( prevId ? prevId : '' ) ) ;
27
+ $ ( opts . selectors . nextLink )
28
+ . toggleClass ( opts . classes . navDisabled , to === last )
29
+ . attr ( 'href' , '#' + ( nextId ? nextId : '' ) ) ;
30
+ } ;
14
31
15
32
/*
16
33
Extends defaults/options.
@@ -41,8 +58,9 @@ This module adds clickable previous and next links to the deck.
41
58
42
59
$d . bind ( 'deck.init' , function ( ) {
43
60
var opts = $ [ deck ] ( 'getOptions' ) ,
44
- nextSlide = $ [ deck ] ( 'getSlide' , 1 ) ,
45
- nextId = nextSlide ? nextSlide . attr ( 'id' ) : undefined ;
61
+ slides = $ [ deck ] ( 'getSlides' ) ,
62
+ $current = $ [ deck ] ( 'getSlide' ) ,
63
+ ndx ;
46
64
47
65
// Setup prev/next link events
48
66
$ ( opts . selectors . previousLink )
@@ -59,25 +77,15 @@ This module adds clickable previous and next links to the deck.
59
77
e . preventDefault ( ) ;
60
78
} ) ;
61
79
62
- // Start on first slide, previous link is disabled, set next link href
63
- $ ( opts . selectors . previousLink ) . addClass ( opts . classes . navDisabled ) ;
64
- $ ( opts . selectors . nextLink ) . attr ( 'href' , '#' + ( nextId ? nextId : '' ) ) ;
80
+ // Find where we started in the deck and set initial states
81
+ $ . each ( slides , function ( i , $slide ) {
82
+ if ( $slide === $current ) {
83
+ ndx = i ;
84
+ return false ;
85
+ }
86
+ } ) ;
87
+ updateButtons ( null , ndx , ndx ) ;
65
88
} )
66
- /* Updates link hrefs, and disabled states if last/first slide */
67
- . bind ( 'deck.change' , function ( e , from , to ) {
68
- var opts = $ [ deck ] ( 'getOptions' ) ,
69
- last = $ [ deck ] ( 'getSlides' ) . length - 1 ,
70
- prevSlide = $ [ deck ] ( 'getSlide' , to - 1 ) ,
71
- nextSlide = $ [ deck ] ( 'getSlide' , to + 1 ) ,
72
- prevId = prevSlide ? prevSlide . attr ( 'id' ) : undefined ;
73
- nextId = nextSlide ? nextSlide . attr ( 'id' ) : undefined ;
74
-
75
- $ ( opts . selectors . previousLink )
76
- . toggleClass ( opts . classes . navDisabled , ! to )
77
- . attr ( 'href' , '#' + ( prevId ? prevId : '' ) ) ;
78
- $ ( opts . selectors . nextLink )
79
- . toggleClass ( opts . classes . navDisabled , to === last )
80
- . attr ( 'href' , '#' + ( nextId ? nextId : '' ) ) ;
81
- } ) ;
89
+ . bind ( 'deck.change' , updateButtons ) ;
82
90
} ) ( jQuery , 'deck' ) ;
83
91
0 commit comments