Bug Tracker

Opened 13 years ago

Closed 13 years ago

Last modified 8 years ago

#1789 closed bug (fixed)

Impossible to initialize an empty tabset

Reported by: klaus Owned by: klaus
Priority: minor Milestone: 1.2.2
Component: ui Version: 1.2.1
Keywords: tabs Cc:
Blocked by: Blocking:

Description (last modified by klaus)

There is no possibility to initialize an empty tabset (e.g. to add all tabs dynamically.

Small fix in tabify() method (line 183) make things better:

if (this.$tabs.length && $.data(this.$tabs[o.initial], 'href')) {

Lines 362-373 of ui.tabs.js (add method):

 if (url.indexOf('#') == 0) { // ajax container is created by tabify automatically
  var $container = $(url);
  // try to find an existing element before creating a new one
  $container = ($container.length && $container || $('<div id="' + url.replace('#', '') + '" class="' + o.containerClass + ' ' + o.hideClass + '"></div>'))
    [method](position > 0 ? this.$containers[position - 1] : $(this.source));
}
var $foo = $('<li><a href="' + url + '"><span>' + text + '</span></a></li>'); 
if(position > 0) $foo[method](this.$tabs.slice(position - 1, position).parents('li:eq(0)'));
else {
  $foo.appendTo($(this.source));
  $container.removeClass('ui-tabs-hide');
}

Basically we've to check if this.$tabs array is not empty...

Change History (4)

comment:1 Changed 13 years ago by klaus

Description: modified (diff)

comment:2 Changed 13 years ago by klaus

Status: newassigned

comment:3 Changed 13 years ago by klaus

Resolution: fixed
Status: assignedclosed

comment:4 Changed 8 years ago by Nick Kusters <jquery@…>

Error Still Exists. See http://jsfiddle.net/zmRT8/18/ for Bug demo + workaround. Fix in the source should be as simple as checking if the UL element exists when calling .add, and adding it if it doesn't.

Note: See TracTickets for help on using tickets.