在以前的版本中,jQuery tabs
有一个选项可以自动将选项卡的高度设置为组中最高选项卡的高度,使用:
$('#container').tabs({ fxAutoHeight: true });
但是,这似乎不适用于jQuery UI 1.5.3
.
这个选项被删除了吗?如果是这样,还有其他方法可以获得相同的功能吗?
在以前的版本中,jQuery tabs
有一个选项可以自动将选项卡的高度设置为组中最高选项卡的高度,使用:
$('#container').tabs({ fxAutoHeight: true });
但是,这似乎不适用于jQuery UI 1.5.3
.
这个选项被删除了吗?如果是这样,还有其他方法可以获得相同的功能吗?
您所要做的就是设置一个最小高度。(我花了很长时间才找到答案......我希望它有所帮助!)。
这是我真正有效的代码:
$("#tabs").tabs().css({
'min-height': '400px',
'overflow': 'auto'
});
在 jQuery 1.9 中,使用heightStyle
属性(此处的文档)
$( ".selector" ).tabs({ heightStyle: "auto" });
看起来它不再存在了,查看这个插件以获得相同的功能
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 个选项卡的内容相当静态,所以对我来说,将所有选项卡的高度设置为最高选项卡的高度就足够了,在我的例子中是 #fragment-1。
这是执行此操作的代码:
$("#tabs div.ui-tabs-panel").css('height', $("#fragment-1").height());
Giannis 的答案对于获得选项卡中的最高高度是正确的,但缺少实际应用该解决方案的代码。您需要添加一种方法来重新显示第一个选项卡(它将被代码消失)和一种设置每个内容区域高度的方法。
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');
});
将选项卡最小高度和调整大小属性设置为无...
例子:
$("#tab").tabs().css({'resize':'none','min-height':'300px'});
我只是在寻找这个解决方案,只有在您知道最小高度应该提前多高的情况下,设置最小高度才是好的。
相反,我进入 css 并更改 ui-tabs 类以添加“overflow:auto;” 如下
.ui-tabs { overflow: auto; position: relative; padding: .2em; zoom: 1; }
这在 FF12 中对我有用……我还没有在其他人身上尝试过。如果这可行,您可能希望创建一个单独的类来保留库存功能和主题互换性等
顺便说一句-您可能需要动态调整大小的原因是,如果您从 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');
});