danielebarchiesi@2: /** danielebarchiesi@2: * @file danielebarchiesi@2: * Implements history using the BBQ plugin. danielebarchiesi@2: * See http://benalman.com/code/projects/jquery-bbq/examples/fragment-jquery-ui-tabs danielebarchiesi@2: */ danielebarchiesi@2: (function($) { danielebarchiesi@2: danielebarchiesi@2: Drupal.quicktabsBbq = function($tabset, clickSelector, changeSelector) { danielebarchiesi@2: danielebarchiesi@2: changeSelector = changeSelector || clickSelector; danielebarchiesi@2: danielebarchiesi@2: // Define our own click handler for the tabs, overriding the default. danielebarchiesi@2: $(clickSelector, $tabset).each(function(i, el){ danielebarchiesi@2: this.tabIndex = i; danielebarchiesi@2: $(this).click(function(e){ danielebarchiesi@2: e.preventDefault(); danielebarchiesi@2: var state = {}, danielebarchiesi@2: id = $tabset.attr('id'), // qt container id danielebarchiesi@2: idx = this.tabIndex; // tab index danielebarchiesi@2: danielebarchiesi@2: state[id] = idx; danielebarchiesi@2: $.bbq.pushState(state); danielebarchiesi@2: }); danielebarchiesi@2: }); danielebarchiesi@2: danielebarchiesi@2: $(window).bind('hashchange', function(e) { danielebarchiesi@2: $tabset.each(function() { danielebarchiesi@2: var idx = $.bbq.getState(this.id, true); danielebarchiesi@2: var $active_link = $(this).find(changeSelector).eq(idx); danielebarchiesi@2: $active_link.triggerHandler('change'); danielebarchiesi@2: }); danielebarchiesi@2: }); danielebarchiesi@2: danielebarchiesi@2: $(window).trigger('hashchange'); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: })(jQuery);