PEG-Wiki/javascript/jquery.tabs.js

59 lines
1.6 KiB
JavaScript

jQuery.fn.tabs = function(){
var getAnchor = function(str) {
return /#([a-z][\w.:-]*)$/i.exec(str)[1];
}
var windowHash = window.location.hash.substr(1);
return this.each(function(){
var selectedLink = null;
var selectedContainer = null;
$(this).find('li a').each(function(){
// Find & hide the container
var container = $('#' + getAnchor(this.href));
if (container == []) return;
container.hide();
// Setup the click handlers for the tab links
$(this).click(function(){
var self = $(this)
var switchTab = function(){
if (selectedContainer) selectedContainer.hide();
if (selectedLink) selectedLink.removeClass('selected');
selectedContainer = container.show();
selectedLink = self.addClass('selected');
}
if (self.attr('ajax')){
self.addClass('loading')
$.ajax({
url: self.attr('ajax'),
success: function(data){
container.html(data)
self.removeClass('loading')
self[0].removeAttribute('ajax')
switchTab()
},
failure: function(data){
alert("An error occured, please reload the page")
}
})
}else{
switchTab()
}
return false;
});
if ($(this).hasClass('selected')) $(this).click();
});
// Try to match window.location.hash
$(this).find("li a[href='#" + windowHash + "']").click()
// Show one tab by default
if (selectedContainer == null) $($(this).find('li a')[0]).click();
});
};