我在选项卡中使用手风琴遇到了问题,最初非活动的手风琴在选择选项卡时无法正确呈现其内容。 阅读我看到的原因是非活动标签最初显示:none,因此手风琴中div的高度无法正确计算。所有建议的解决方案都不适合我。 有没有人克服这个或有解决方法?
以下是问题的一些示例代码:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/jquery-ui-1.7.2.custom.css" media="screen" />
<script type='text/javascript' src='../scripts/jquery-1.3.2.min.js'></script>
<script type='text/javascript' src='../scripts/jquery-ui-1.7.2.custom.js'></script>
<script type="text/javascript">
$(document).ready(function(){
$('#tabs').tabs();
$("#accordion1").accordion();
$("#accordion2").accordion();
});
</script>
</head>
<body style="font-size:62.5%;">
<div id="main" class="round roundB">
<div id="tabs">
<ul>
<li><a href="#tab1">Tab 1</a> </li>
<li><a href="#tab2">Tab 2</a> </li>
</ul>
<div id="tab1">
<div id="accordion1">
<h3><a href="#">Section 1</a></h3>
<div>
<p>
TAB 1 Accordion 1
</p>
</div>
<h3><a href="#">Section 2</a></h3>
<div>
<p>
TAB 1 Accordion 2
</p>
</div>
</div>
</div>
<div id="tab2">
<div id="accordion2">
<h3><a href="#">Section 1</a></h3>
<div>
<p>
TAB 2 Accordion 1
</p>
</div>
<h3><a href="#">Section 2</a></h3>
<div>
<p>
TAB 2 Accordion 2
</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
答案 0 :(得分:56)
之前我遇到过同样的问题。 解决方案是:您必须在标签前激活手风琴。
$("#accordion").accordion();
$("#tabs").tabs();
也许你需要左对齐。
.ui-accordion-header{
text-align: left;
}
祝你好运
答案 1 :(得分:8)
在阅读了陈述的问题后,我的印象是我遇到的问题具有类似的性质。在选项卡中使用手风琴功能迫使我的手风琴内容包含滚动条,这是我不想要的功能。
由于某种原因,目前提供的解决方案对我不起作用。
我找到的解决方案是覆盖autoHeight的默认折叠设置(默认为true,覆盖为false)
$("#accordion").accordion({
autoHeight: false
});
$('#tabs').tabs();
答案 2 :(得分:1)
激活标签时初始化手风琴:
样品:
$('.selector').bind('tabsadd', function(event, ui) {
...
});
你的样本:
<script type="text/javascript">
$(document).ready(function(){
$('#tabs').tabs();
$('#tabs').bind('tabshow', function(event, ui) {
$("#accordion1").accordion();
$("#accordion2").accordion();
});
});
</script>
也许您需要为每个标签初始化每个特殊的手风琴。
或使用最新的UI lib:
<link rel="stylesheet" href="http://static.jquery.com/ui/css/base2.css" type="text/css" media="all" />
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" type="text/css" media="all" />
<link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>
<script src="http://jquery-ui.googlecode.com/svn/tags/latest/external/bgiframe/jquery.bgiframe.min.js" type="text/javascript"></script>
<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/minified/i18n/jquery-ui-i18n.min.js" type="text/javascript"></script>
答案 3 :(得分:1)
$( "#tabs" ).tabs({
load: function(event, ui) {
$("#"+ui.panel.id+" .accordians:first").accordion();
}
});
当使用带标签的ajax html时,这有效。
答案 4 :(得分:1)
以上都不适合我。对我来说,诀窍是将每个手风琴的独特div ID改为所有手风琴的单一类别识别。也就是说,在每个标签中将<div id="accordion1>, <div id="accordion2>,
等更改为<div class="accordion">
。
您可能还需要添加到$(文档).ready函数
$(".accordion").accordion({ autoHeight: false }); $('#tabs').tabs(); $('#tabs').bind('tabshow', function(event, ui) { $(".accordion").accordion("resize"); });
所以格式为:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/jquery-ui-1.7.2.custom.css" media="screen" />
<script type='text/javascript' src='../scripts/jquery-1.3.2.min.js'></script>
<script type='text/javascript' src='../scripts/jquery-ui-1.7.2.custom.js'></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".accordion").accordion({
autoHeight: false
});
$('#tabs').tabs();
$('#tabs').bind('tabshow', function(event, ui) {
$(".accordion").accordion("resize");
});
});
</script>
</head>
<body style="font-size:62.5%;">
<div id="tabs">
<ul>
<li><a href="#tabs-1">User</a></li>
<li><a href="#tabs-2">Folders</a></li>
<li><a href="#tabs-3">Decks</a></li>
</ul>
<div id="tabs-1">
<div class='accordion'>
<h3>Header 1</h3>
<div</div>
<h3>Header 2</h3>
<div></div>
<h3>Header 3</h3>
<div><</div>
</div>
</div>
<div id="tabs-2">
<div class='accordion'>
<h3>Header 4</h3>
<div</div>
<h3>Header 5</h3>
<div></div>
<h3>Header 6</h3>
<div><</div>
</div>
</div>
<div id="tabs-3">
<div class='accordion'>
<h3>Header 7</h3>
<div</div>
<h3>Header 8</h3>
<div></div>
<h3>Header 9</h3>
<div><</div>
</div>
</div>
</div>
</body>
</html>
答案 5 :(得分:0)
答案 6 :(得分:-1)
仔细阅读http://docs.jquery.com/UI/Tabs# 有一个答案。这是最简单的方式