-
Notifications
You must be signed in to change notification settings - Fork 1
/
blogslider.js
99 lines (78 loc) · 2.49 KB
/
blogslider.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
/*
* BlogSlider v 1.0
*
* Author: Daniel Vega
* Description: Demo jQuery plugin for cfObjective 2011
*/
(function( $ ){
// PUBLIC FUNCTION ADDED TO THE jQuery.fn Object
$.fn.blogslider = function( options ) {
var timer = null,
// override settings with passed parameters
settings = $.extend( {}, $.fn.blogslider.defaults, options ),
aboutEnabled = settings.showAboutOnLoad,
blogs = this.find( ".blog" ),
menuItems = this.find( "#bsnavigation li"),
hideme = this.find( ".hideme" ),
about = this.find( ".about" );
// show first blog
blogs.first().addClass( "current" ).show();
// add the active class to the first navigation item
menuItems.first().addClass('active');
// set text for hideme
hideme.html(aboutEnabled ? 'Hide Description' : 'Show Description');
/*
* by default we hide the about section. The user can override this setting
* using the showAboutOnLoad configuration setting. If they pass in true then
* we need to call show because the css for .about is set to display:none
*/
if( aboutEnabled ){
about.show();
}
// NAVIGATION ITEMS CLICK EVENT
this.delegate( "#bsnavigation li", 'click', function(e){
e.preventDefault();
var thisMenuItem = $( this ),
image = thisMenuItem.find('a').attr("href"),
blog = blogs.find("img[src='" + image + "']").closest('.blog');
// hide all the blogs and
// fade in the current one
blogs.not( blog ).hide();
blog.fadeIn();
// deselect previous menu, and select active menu
menuItems.not( thisMenuItem ).removeClass('active');
thisMenuItem.addClass('active');
if ( e.originalEvent ) {
// If the user clicked the menu item, then cancel autoPlay
clearInterval(timer);
}
});
// SHOW/HIDE ABOUT
hideme.click(function(e){
aboutEnabled = !aboutEnabled;
about.slideToggle(function(){
about.css('display',aboutEnabled ? 'inherit' : 'none');
});
hideme.html( aboutEnabled ? "Show Description" : "Hide Description" );
e.preventDefault();
});
// AUTO PLAY
if( settings.autoPlay ) {
timer = setInterval(function(){
var $next = menuItems.filter(".active").next();
if ( !$next.length ) {
$next = menuItems.eq(0);
};
// Reuse the click event to
// keep code duplication to a minimum
$next.click();
}, settings.slideDelay );
}
return this;
};
$.fn.blogslider.defaults = {
autoPlay: true,
slideDelay: 3000,
showAboutOnLoad: false
};
})( jQuery );