-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjquery.semantictabs.js
87 lines (73 loc) · 3.07 KB
/
jquery.semantictabs.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
/*
jquery.semantictabs.js
Creates semantic tabs from nested divs
Chris Yates
Inspired by Niall Doherty's jQuery Coda-Slider v1.1 - http://www.ndoherty.com/coda-slider
Copyright (C) 2007-2011 Chris Yates
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Usage:
$("#mycontainer").semantictabs({
panel:'.mypanelclass', //-- Selector of individual panel body
head:'headelement', //-- Selector of element containing panel header
active:':first', //-- Which panel to activate by default
activate:':eq(2)' //-- Argument used to activate panel programmatically
});
1 Nov 2007
Bug fixes 15 Dec 2009:
http://plugins.jquery.com/node/11834
http://plugins.jquery.com/node/8486
(thanks zenmonkey)
Feature update 4 Jan 2010:
Now works with arbitrary jQuery selectors, not just 'class' attribute.
*/
jQuery.fn.semantictabs = function(passedArgsObj) {
/* defaults */
var defaults = {panel:'.panel', head:'h3', active:':first', activate:false};
/* override the defaults if necessary */
var args = jQuery.extend(defaults,passedArgsObj);
// Allow activation of specific tab, by index
if (args.activate) {
return this.each(function(){
var container = jQuery(this);
container.find(args.panel).hide();
container.find("ul.tabs li").removeClass("active");
container.find(args.panel + ":eq(" + args.activate + ")").show();
container.find("ul.tabs li:eq(" + args.activate + ")").addClass("active");
});
} else {
return this.each(function(){
// Load behavior
var container = jQuery(this);
container.find(args.panel).hide();
container.find(args.panel + args.active).show();
container.prepend("<ul class=\"tabs semtabs\"></ul>");
container.find(args.panel).each( function() {
var title = jQuery(this).find(args.head).text();
this.title = title;
container.find("ul.tabs").append("<li><a href=\"javascript:void(0);\">"+title+"</a></li>");
});
container.find("ul li" + args.active).addClass("active");
// Tab click behavior
container.find("ul.tabs li").click(function(){
container.find(args.panel).hide();
container.find("ul.tabs li").removeClass("active");
container.find(args.panel + "[title='"+jQuery(this).text()+"']").show();
jQuery(this).addClass("active");
});
container.find("#remtabs").click(function(){
container.find("ul.tabs").remove();
container.find(args.container + " " + args.panel).show();
container.find("#remtabs").remove();
});
});
}
};