Bug Tracker

Changeset 5546

Show
Ignore:
Timestamp:
05/10/08 08:27:36 (8 months ago)
Author:
klaus.hartl
Message:

UI Tabs: was incorrectly assuming span element

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/ui/ui.tabs.js

    r5545 r5546  
    427427             
    428428            // no remote or from cache - just finish with callback 
    429             if (!url || ($.data(a, 'cache.tabs') && !bypassCache)) { 
     429            if (!url || !bypassCache && $.data(a, 'cache.tabs')) { 
    430430                callback(); 
    431431                return; 
    432432            } 
    433433 
     434            var inner = function(parent) { 
     435                var $parent = $(parent), $inner = $parent.find('*:last'); 
     436                return $inner.length && $inner || $parent; 
     437            }; 
     438             
    434439            // load remote from here on 
    435440            if (o.spinner) { 
    436                 var $span = $('span', a); 
    437                 $span.data('label.tabs', $span.html()).html('<em>' + o.spinner + '</em>'); 
    438             } 
    439             var finish = function() { 
    440                 self.$tabs.filter('.' + o.loadingClass).each(function() { 
    441                     $(this).removeClass(o.loadingClass); 
    442                     if (o.spinner) { 
    443                         var $span = $('span', this); 
    444                         $span.html($span.data('label.tabs')).removeData('label.tabs'); 
    445                     } 
    446                 }); 
     441                var label = inner(a).html(); 
     442                inner(a).wrapInner('<em></em>') 
     443                    .find('em').data('label.tabs', label).html(o.spinner); 
     444            } 
     445            var cleanup = function() { 
     446                self.$tabs.filter('.' + o.loadingClass).removeClass(o.loadingClass) 
     447                            .each(function() { 
     448                                if (o.spinner) 
     449                                    inner(this).parent().html(inner(this).data('label.tabs')); 
     450                            }); 
    447451                self.xhr = null; 
    448452            }; 
     
    451455                success: function(r, s) { 
    452456                    $(a.hash).html(r); 
    453                     finish(); 
     457                    cleanup(); 
    454458                     
    455459                    if (o.cache) 
     
    471475                // terminate pending requests from other tabs and restore tab label 
    472476                this.xhr.abort(); 
    473                 finish(); 
     477                cleanup(); 
    474478            } 
    475479            $a.addClass(o.loadingClass);