/** * Light jQuery tab plugin * * the html structure is: * *
* *
* Content 1 *
*
*/ (function( $ ){ var methods = { /** * Initialise the general tab area * @return this (to preserve chainability) */ init: function() { var tabs = this; this.find('ul.tabbar li').bind('click.tabs', function(event){ event.preventDefault(); tabs.tabs('select',$(this).find('a').attr('href')); }); this.data('tabs',{}); return this; }, /** * Select a tab * @param {String} id The tab id with # * @return this */ select: function(id) { var selectedId = this.data('tabs').selected; if ( selectedId == id) { return this; } this.find('ul.tabbar li a[href="' + selectedId + '"]').parent().removeClass('selected'); this.find('ul.tabbar li a[href="' + id + '"]').parent().addClass('selected'); $(selectedId).hide(); $(id).show(); this.data('tabs').selected = id; return this; }, /** * Add a tab * @param {String} name The tab Title * @param {String} id The tab id without # * @pram {Bool} remove Wether the tab should be closable * return this */ add: function(name, id, remove) { var tabs = this; var li = $('
  • ' + name +'
  • '); if ( remove ) { li.append(''); li.find('.tab-close').bind('click', function() { tabs.tabs('remove', '#'+id); }); } li.bind('click.tabs',function(event){ event.preventDefault(); tabs.tabs('select',$(this).find('a').attr('href')); }); $(this).find('ul.tabbar').append(li); $(this).append('
    '); return this; }, /** * Test if a tab exists * @param {String} id The tab id with # * @return {Bool} */ exist: function(id) { return (this.find('ul.tabbar li a[href="' + id + '"]').length != 0); }, /** * Remove a tab * @param {String} id The tab id with # * @return this */ remove: function(id) { this.find('ul.tabbar li a[href="' + id + '"]').parent().remove(); $(id).remove(); if (this.data('tabs').selected == id) { var first = this.find('ul.tabbar li:first a').attr('href'); this.tabs('select', first); } } }; /* * Register the 'tabs' method to the jQuery objects * the first argument of this method is the submethod * you want to call */ $.fn.tabs = function(method) { if ( methods[method] ) { return methods[method].apply(this, Array.prototype.slice .call(arguments, 1)); } else if ( typeof method === 'object' || !method ) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.tabs'); } }; })(jQuery);