/
slide_deck.js
119 lines (106 loc) · 2.52 KB
/
slide_deck.js
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
$.fn.slideDeck = function(options){
$(this).each(function(index) {
var that = this,
deck = $(this),
items = $('li', deck),
counter = 0,
total_items = items.length - 1,
wrapper = deck.parent(),
nav = $('nav', wrapper),
// prev next
nextBtn = $('.next', nav).click(goNext),
prevBtn = $('.prev', nav).click(goPrevious),
// pager
pager = $('<ul class="pager"/>'),
pager_items = '',
// accordion
accord_btns = $('.accordion h3 a', wrapper),
// settings
duration = 'normal',
settings = {
'pager' : 1,
'prev_next' : 0,
'accordion_nav' : 0
};
if(options){
$.extend(settings, options);
}
init();
function init() {
if (items.length > 1) {
showFirstItem();
if(settings.pager){
createPager();
attachPager();
pagerLinks();
}
if (settings.accordion_nav) {
accordionLinks()
}
if(settings.prev_next){
showNav() //: nav.hide();
}
} else if (items.length === 1) {
nav.hide();
} else {
deck.hide();
}
}
function showNav() {
nav.hide();
deck.hover(function() {
nav.show();
},function() {
nav.hide();
});
}
function createPager() {
$(items).map(function(i) {
return pager_items += '<li><a href="#" id="pagerlink_'+i+'">'+i+'</a></li>';
}).get().join();
return pager_items;
}
function attachPager() {
$(pager_items).appendTo(pager);
$(nav).append(pager);
$(".pager li:eq(0)").addClass('active');
}
function accordionLinks() {
$(accord_btns).click(function (e) {
counter = $(".accordion h3 a").index(this);
changeSlide();
e.preventDefault();
});
}
function changeSlide() {
// Use for testing
$(items[counter]).show().siblings().hide();
//$(items[counter]).fadeIn(duration).siblings().fadeOut(duration);
}
function showFirstItem() {
$(items[0]).siblings().hide();
}
function pagerLinks() {
$('.pager li a').click(function(e) {
$(this).parent().addClass('active').siblings().removeClass('active');
var link_id = $(e.target).attr('id');
link_id = parseInt(link_id.replace(/pagerlink_/g,''), 10);
if(counter !== link_id){
counter = link_id;
changeSlide();
}
e.preventDefault();
});
}
function goNext(e) {
counter === total_items ? counter = 0 : counter++;
changeSlide();
e.preventDefault();
}
function goPrevious(e) {
counter <= 0 ? counter = total_items : counter--;
changeSlide();
e.preventDefault();
}
});
};