(bug 27833) CollapsibleTabs doesn't collapse tabs due to JS errors
authorRoan Kattouw <catrope@users.mediawiki.org>
Thu, 21 Apr 2011 14:39:45 +0000 (14:39 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Thu, 21 Apr 2011 14:39:45 +0000 (14:39 +0000)
* Change remove() to detach() so .data() isn't lost
* Be more careful using the parent's .data() in addData()
* Change ele (which mysteriously isn't available in the closure) to this, they're the same anyway

resources/jquery/jquery.collapsibleTabs.js

index 47811b0..1c68250 100644 (file)
                },
                addData: function( $collapsible ) {
                        var $settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
-                       $collapsible.data( 'collapsibleTabsSettings', {
-                               'expandedContainer': $settings.expandedContainer,
-                               'collapsedContainer': $settings.collapsedContainer,
-                               'expandedWidth': $collapsible.width(),
-                               'prevElement': $collapsible.prev()
-                       } );
+                       if ( typeof $settings != 'undefined' ) {
+                               $collapsible.data( 'collapsibleTabsSettings', {
+                                       'expandedContainer': $settings.expandedContainer,
+                                       'collapsedContainer': $settings.collapsedContainer,
+                                       'expandedWidth': $collapsible.width(),
+                                       'prevElement': $collapsible.prev()
+                               } );
+                       }
                },
                getSettings: function( $collapsible ) {
                        var $settings = $collapsible.data( 'collapsibleTabsSettings' );
@@ -95,7 +97,7 @@
                        var dataExp = $.collapsibleTabs.getSettings( data.expandedContainer );
                        dataExp.shifting = true;
                        $moving
-                               .remove()
+                               .detach()
                                .prependTo( data.collapsedContainer )
                                .data( 'collapsibleTabsSettings', data );
                        dataExp.shifting = false;
                        var dataExp = $.collapsibleTabs.getSettings( data.expandedContainer );
                        dataExp.shifting = true;
                        // remove this element from where it's at and put it in the dropdown menu
-                       $moving.remove().insertAfter( data.prevElement ).data( 'collapsibleTabsSettings', data );
+                       $moving.detach().insertAfter( data.prevElement ).data( 'collapsibleTabsSettings', data );
                        dataExp.shifting = false;
                        $.collapsibleTabs.handleResize();
                }