Ответ 1
Похоже, что его больше нет, посмотрите этот плагин для той же функциональности
В предыдущих версиях jQuery tabs
появилась возможность автоматически устанавливать высоту вкладки на вкладку самой высокой вкладки в группе, используя:
$('#container').tabs({ fxAutoHeight: true });
Однако это не работает в jQuery UI 1.5.3
.
Удалена ли эта опция? Если это так, есть другой способ получить ту же функциональность?
Похоже, что его больше нет, посмотрите этот плагин для той же функциональности
Все, что вам нужно сделать, это установить минимальную высоту. (Мне потребовалось время, чтобы найти ответ на этот вопрос. Надеюсь, это поможет!).
Вот мой код, который действительно работает:
$("#tabs").tabs().css({
'min-height': '400px',
'overflow': 'auto'
});
В jQuery 1.9 используйте атрибут heightStyle
(docs здесь)
$( ".selector" ).tabs({ heightStyle: "auto" });
После чтения документации кажется, что опция больше недоступна. Однако очень просто реплицировать эту функциональность.
Предполагая, что ваши вкладки расположены горизонтально:
$("ul.tabs a").css('height', $("ul.tabs").height());
Пример от gabriel дал мне правильный результат, но я не мог заставить его работать именно так. Если вы посмотрите на пример исходного кода документации jQuery, вы увидите, что код HTML должен выглядеть следующим образом:
<div id="tabs">
<ul>
<li><a href="#fragment-1"><span>One</span></a></li>
<li><a href="#fragment-2"><span>Two</span></a></li>
<li><a href="#fragment-3"><span>Three</span></a></li>
</ul>
<div id="fragment-1">
<p>First tab is active by default:</p>
<pre><code>$('#example').tabs();</code></pre>
</div>
...
</div>
Поскольку у меня есть 3 вкладки, у которых есть довольно статичный контент, для меня было достаточно установить высоту всех вкладок на высоту самой высокой, которая в моем случае является # фрагментом-1.
Это код, который делает это:
$("#tabs div.ui-tabs-panel").css('height', $("#fragment-1").height());
Ответ Джанниса верен для получения самой высокой высоты среди вкладок, но отсутствует код для фактического применения этого решения. Вам нужно добавить способ перепрограммировать первую вкладку (которая будет исчезать кодом) и способ установить высоту каждой из областей содержимого.
var height = 0;
//Get the highest height.
$("#tables .ui-widget-content").each(function(){
$(this).removeClass('ui-tabs-hide');
var oheight = height; //used to identify tab 0
if(height < $(this).height())
{
height = $(this).height();
}
if(oheight != 0)
{
$(this).addClass('ui-tabs-hide');
}
});
//Apply it to each one...
$("#tables .ui-widget-content").height(height);
var biggestHeight = 0;
jQuery.each($(this).find(".ui-tabs-panel"),
function (index, element) {
var needAppend = false;
if ($(element).hasClass('ui-tabs-hide')) {
$(element).removeClass('ui-tabs-hide');
needAppend = true;
}
if ($(element).height() > biggestHeight)
biggestHeight = $(element).height();
if (needAppend)
$(element).addClass('ui-tabs-hide');
});
Установить минимальную высоту вкладки и изменить ее размер на none...
Пример:
$("#tab").tabs().css({'resize':'none','min-height':'300px'});
Я просто искал это решение, и установка минимальной высоты - это только хорошо, если вы знаете, насколько высока минимальная высота должна быть заранее.
Вместо этого я пошел в css и изменил класс ui-tabs, чтобы добавить "overflow: auto;" как ниже
.ui-tabs { overflow: auto; position: relative; padding: .2em; zoom: 1; }
Это работает для меня в FF12... Я не пробовал это в других. Если это работает, вы можете создать отдельный класс для сохранения функциональности запаса и взаимозаменяемости между ними и т.д.
BTW - причина, по которой вам может понадобиться динамическая калибровка, - это если вы загружаете из Ajax, но не используете метод загрузчика табуляции, а скорее другую функцию (их метод предполагает, что контент все исходит из одного ресурса url, который может не быть достаточно в зависимости от того, насколько продвинута ваша динамическая популяция).
НТН
var height = 0;
$("#tabs .ui-widget-content").each(function(){
$(this).removeClass('ui-tabs-hide');
if(height < $(this).height())
height = $(this).height();
$(this).addClass('ui-tabs-hide');
});
Проверьте URL:
http://api.jqueryui.com/tabs/#option-heightStyle
$("#tabs").tabs({ heightStyle: "fill" });