]> source.dussan.org Git - jquery-ui.git/commitdiff
Accordion: Split out navigation options into an extension. Fixes #5869 - Accordion...
authorScott González <scott.gonzalez@gmail.com>
Sat, 11 Dec 2010 20:57:49 +0000 (15:57 -0500)
committerScott González <scott.gonzalez@gmail.com>
Sat, 11 Dec 2010 20:57:49 +0000 (15:57 -0500)
ui/jquery.ui.accordion.js

index 0f404b90c76df1409751cd398ea6a4979f0972b8..d134d3b6be267c69d4cc98bc56eedeb018232f74 100644 (file)
@@ -26,10 +26,6 @@ $.widget( "ui.accordion", {
                icons: {
                        header: "ui-icon-triangle-1-e",
                        headerSelected: "ui-icon-triangle-1-s"
-               },
-               navigation: false,
-               navigationFilter: function() {
-                       return this.href.toLowerCase() === location.href.toLowerCase();
                }
        },
 
@@ -77,20 +73,6 @@ $.widget( "ui.accordion", {
                        .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
                self.headers.find( ":first-child" ).addClass( "ui-accordion-heading" );
 
-               if ( options.navigation ) {
-                       var current = self.element.find( "a" ).filter( options.navigationFilter ).eq( 0 );
-                       if ( current.length ) {
-                               var header = current.closest( ".ui-accordion-header" );
-                               if ( header.length ) {
-                                       // anchor within header
-                                       self.active = header;
-                               } else {
-                                       // anchor within content
-                                       self.active = current.closest( ".ui-accordion-content" ).prev();
-                               }
-                       }
-               }
-
                self.active = self._findActive( self.active || options.active )
                        .addClass( "ui-state-default ui-state-active" )
                        .toggleClass( "ui-corner-all" )
@@ -598,4 +580,40 @@ $.extend( $.ui.accordion, {
        }
 });
 
+
+
+// DEPRECATED
+
+// navigation options
+(function( $, prototype ) {
+       $.extend( prototype.options, {
+               navigation: false,
+               navigationFilter: function() {
+                       return this.href.toLowerCase() === location.href.toLowerCase();
+               }
+       });
+       
+       var _create = prototype._create;
+       prototype._create = function() {
+               if ( this.options.navigation ) {
+                       var self = this,
+                               headers = this.element.find( this.options.header ),
+                               content = headers.next();
+                               current = headers.add( content )
+                                       .find( "a" )
+                                       .filter( this.options.navigationFilter )
+                                       [ 0 ];
+                       if ( current ) {
+                               headers.add( content ).each( function( index ) {
+                                       if ( $.contains( this, current ) ) {
+                                               self.options.active = Math.floor( index / 2 );
+                                               return false;
+                                       }
+                               });
+                       }
+               }
+               _create.call( this );
+       };
+}( jQuery, jQuery.ui.accordion.prototype ));
+
 })( jQuery );