[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 /** 2 * Accordion-folding functionality. 3 * 4 * Markup with the appropriate classes will be automatically hidden, 5 * with one section opening at a time when its title is clicked. 6 * Use the following markup structure for accordion behavior: 7 * 8 * <div class="accordion-container"> 9 * <div class="accordion-section open"> 10 * <h3 class="accordion-section-title"><button type="button" aria-expanded="true" aria-controls="target-1"></button></h3> 11 * <div class="accordion-section-content" id="target"> 12 * </div> 13 * </div> 14 * <div class="accordion-section"> 15 * <h3 class="accordion-section-title"><button type="button" aria-expanded="false" aria-controls="target-2"></button></h3> 16 * <div class="accordion-section-content" id="target-2"> 17 * </div> 18 * </div> 19 * <div class="accordion-section"> 20 * <h3 class="accordion-section-title"><button type="button" aria-expanded="false" aria-controls="target-3"></button></h3> 21 * <div class="accordion-section-content" id="target-3"> 22 * </div> 23 * </div> 24 * </div> 25 * 26 * Note that any appropriate tags may be used, as long as the above classes are present. 27 * 28 * @since 3.6.0 29 * @output wp-admin/js/accordion.js 30 */ 31 32 ( function( $ ){ 33 34 $( function () { 35 36 // Expand/Collapse accordion sections on click. 37 $( '.accordion-container' ).on( 'click', '.accordion-section-title button', function() { 38 accordionSwitch( $( this ) ); 39 }); 40 41 }); 42 43 /** 44 * Close the current accordion section and open a new one. 45 * 46 * @param {Object} el Title element of the accordion section to toggle. 47 * @since 3.6.0 48 */ 49 function accordionSwitch ( el ) { 50 var section = el.closest( '.accordion-section' ), 51 container = section.closest( '.accordion-container' ), 52 siblings = container.find( '.open' ), 53 siblingsToggleControl = siblings.find( '[aria-expanded]' ).first(), 54 content = section.find( '.accordion-section-content' ); 55 56 // This section has no content and cannot be expanded. 57 if ( section.hasClass( 'cannot-expand' ) ) { 58 return; 59 } 60 61 // Add a class to the container to let us know something is happening inside. 62 // This helps in cases such as hiding a scrollbar while animations are executing. 63 container.addClass( 'opening' ); 64 65 if ( section.hasClass( 'open' ) ) { 66 section.toggleClass( 'open' ); 67 content.toggle( true ).slideToggle( 150 ); 68 } else { 69 siblingsToggleControl.attr( 'aria-expanded', 'false' ); 70 siblings.removeClass( 'open' ); 71 siblings.find( '.accordion-section-content' ).show().slideUp( 150 ); 72 content.toggle( false ).slideToggle( 150 ); 73 section.toggleClass( 'open' ); 74 } 75 76 // We have to wait for the animations to finish. 77 setTimeout(function(){ 78 container.removeClass( 'opening' ); 79 }, 150); 80 81 // If there's an element with an aria-expanded attribute, assume it's a toggle control and toggle the aria-expanded value. 82 if ( el ) { 83 el.attr( 'aria-expanded', String( el.attr( 'aria-expanded' ) === 'false' ) ); 84 } 85 } 86 87 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Sun Dec 22 08:20:01 2024 | Cross-referenced by PHPXref |