| 21 | | return this.each(function() { |
| 22 | | if (method) { |
| 23 | | var tabs = $.data(this, 'ui-tabs'); |
| 24 | | tabs[method].apply(tabs, args); |
| 25 | | } else |
| 26 | | new $.ui.tabs(this, args[0] || {}); |
| 27 | | }); |
| | 21 | return method == 'length' ? |
| | 22 | $.data(this[0], 'ui-tabs').$tabs.length : |
| | 23 | this.each(function() { |
| | 24 | if (method) { |
| | 25 | var tabs = $.data(this, 'ui-tabs'); |
| | 26 | tabs[method].apply(tabs, args); |
| | 27 | } else |
| | 28 | new $.ui.tabs(this, args[0] || {}); |
| | 29 | }); |
| 349 | | if (url && label) { |
| 350 | | index = index || this.$tabs.length; // append by default |
| 351 | | |
| 352 | | var o = this.options; |
| 353 | | var $li = $(o.tabTemplate.replace(/#\{href\}/, url).replace(/#\{label\}/, label)); |
| 354 | | $li.data('destroy.ui-tabs', true); |
| 355 | | |
| 356 | | var id = url.indexOf('#') == 0 ? url.replace('#', '') : this.tabId( $('a:first-child', $li)[0] ); |
| 357 | | |
| 358 | | // try to find an existing element before creating a new one |
| 359 | | var $panel = $('#' + id); |
| 360 | | if (!$panel.length) { |
| 361 | | $panel = $(o.panelTemplate).attr('id', id) |
| 362 | | .addClass(o.panelClass).addClass(o.hideClass); |
| 363 | | $panel.data('destroy.ui-tabs', true); |
| 364 | | } |
| 365 | | if (index >= this.$lis.length) { |
| 366 | | $li.appendTo(this.element); |
| 367 | | $panel.appendTo(this.element.parentNode); |
| 368 | | } else { |
| 369 | | $li.insertBefore(this.$lis[index]); |
| 370 | | $panel.insertBefore(this.$panels[index]); |
| 371 | | } |
| 372 | | |
| 373 | | this.tabify(); |
| 374 | | |
| 375 | | if (this.$tabs.length == 1) { |
| 376 | | $li.addClass(o.selectedClass); |
| 377 | | $panel.removeClass(o.hideClass); |
| 378 | | var href = $.data(this.$tabs[0], 'load.ui-tabs'); |
| 379 | | if (href) |
| 380 | | this.load(index, href); |
| 381 | | } |
| 382 | | |
| 383 | | // callback |
| 384 | | $(this.element).triggerHandler("add.ui-tabs", |
| 385 | | [this.ui(this.$tabs[index], this.$panels[index])] |
| 386 | | ); |
| 387 | | |
| 388 | | } else |
| 389 | | throw 'jQuery UI Tabs: Not enough arguments to add tab.'; |
| | 351 | if (index == undefined) |
| | 352 | index = this.$tabs.length; // append by default |
| | 353 | |
| | 354 | var o = this.options; |
| | 355 | var $li = $(o.tabTemplate.replace(/#\{href\}/, url).replace(/#\{label\}/, label)); |
| | 356 | $li.data('destroy.ui-tabs', true); |
| | 357 | |
| | 358 | var id = url.indexOf('#') == 0 ? url.replace('#', '') : this.tabId( $('a:first-child', $li)[0] ); |
| | 359 | |
| | 360 | // try to find an existing element before creating a new one |
| | 361 | var $panel = $('#' + id); |
| | 362 | if (!$panel.length) { |
| | 363 | $panel = $(o.panelTemplate).attr('id', id) |
| | 364 | .addClass(o.panelClass).addClass(o.hideClass); |
| | 365 | $panel.data('destroy.ui-tabs', true); |
| | 366 | } |
| | 367 | if (index >= this.$lis.length) { |
| | 368 | $li.appendTo(this.element); |
| | 369 | $panel.appendTo(this.element.parentNode); |
| | 370 | } else { |
| | 371 | $li.insertBefore(this.$lis[index]); |
| | 372 | $panel.insertBefore(this.$panels[index]); |
| | 373 | } |
| | 374 | |
| | 375 | o.disabled = $.map(o.disabled, |
| | 376 | function(n, i) { return n >= index ? ++n : n }); |
| | 377 | |
| | 378 | this.tabify(); |
| | 379 | |
| | 380 | if (this.$tabs.length == 1) { |
| | 381 | $li.addClass(o.selectedClass); |
| | 382 | $panel.removeClass(o.hideClass); |
| | 383 | var href = $.data(this.$tabs[0], 'load.ui-tabs'); |
| | 384 | if (href) |
| | 385 | this.load(index, href); |
| | 386 | } |
| | 387 | |
| | 388 | // callback |
| | 389 | $(this.element).triggerHandler("add.ui-tabs", |
| | 390 | [this.ui(this.$tabs[index], this.$panels[index])] |
| | 391 | ); |