User:Locke/common.js: Difference between revisions
Jump to navigation
Jump to search
Want an adless experience? Log in or Create an account.
(prevent multiple defaults for a single selector) |
No edit summary |
||
Line 31: | Line 31: | ||
var selector = $(this).data( 'tabSelector' ); | var selector = $(this).data( 'tabSelector' ); | ||
if( typeof selector === 'undefined' ) selector = tabstate[target].length; | if( typeof selector === 'undefined' ) selector = tabstate[target].length; | ||
var action = $(this).data( 'tabType' ); | |||
// look at each tab's selection | // look at each tab's selection | ||
Line 42: | Line 43: | ||
} | } | ||
// | // activation event | ||
$(this).on( | $(this).on( action, function() { | ||
$('#'+target+' .tabcontent2').hide(); | $('#'+target+' .tabcontent2').hide(); | ||
$('.tabset[data-tab-target="'+target+'"][data-tab-selector="'+selector+'"] .tab2').removeClass( 'active' ); | $('.tabset[data-tab-target="'+target+'"][data-tab-selector="'+selector+'"] .tab2').removeClass( 'active' ); |
Revision as of 03:01, November 16, 2014
/* Three different behaviors desired: 1. all content on one page -all content is initially visible for no-js. js hides all except "default" 2. content is on subpages, transcluded -"no-js" content is initially visible, the rest hidden. js hides "no-js" and shows "default" 3. ajax -"no-js" content is initially visible. js removes "no-js" and calls for "default" */ $(function() { var tabstate = {}; // hide the content $('.tabtarget .tabcontent2').hide(); // select a tab var tabselect = function( target, selector, selection ) { tabstate[target][selector] = selection; var content = tabstate[target].join( ' ' ); $('#'+target+' div[data-tab-content="'+content+'"]').show(); } // look at each tabset's target and selector $('.tabset').each( function() { var target = $(this).data( 'tabTarget' ); tabstate[target] = tabstate[target] || []; var selector = $(this).data( 'tabSelector' ); if( typeof selector === 'undefined' ) selector = tabstate[target].length; var action = $(this).data( 'tabType' ); // look at each tab's selection $(this).find( '.tab2' ).each( function() { var selection = $(this).data( 'tabSelection' ); // check default if( $(this).data( 'tabDefault' ) && !tabstate[target][selector] ) { $(this).addClass( 'active' ); tabselect( target, selector, selection ); } // activation event $(this).on( action, function() { $('#'+target+' .tabcontent2').hide(); $('.tabset[data-tab-target="'+target+'"][data-tab-selector="'+selector+'"] .tab2').removeClass( 'active' ); $(this).addClass( 'active' ); tabselect( target, selector, selection ); }); }); }); }); function DataLoader( basepage, target ) { this.loadData = function( subpage ) { mw.loader.using( 'mediawiki.api', function () { (new mw.Api()).ajax( { action: 'parse', format: 'json', prop: 'text', page: basepage + '/' + subpage } ).done ( function ( data ) { $('#' + target).empty(); $('#' + target).append( data['parse']['text']['*'] ); } ); } ); }; } var loader = new DataLoader( 'User:Locke/Sandbox', 'dl-target' ); loader.loadData( 'Template' );