Ответ 1
Раньше у меня была такая же проблема. Решение: вы должны активировать аккордеон перед вкладками.$("#accordion").accordion();
$("#tabs").tabs();
Возможно, вам нужно левое выравнивание.
.ui-accordion-header{
text-align: left;
}
удача
Ive сталкивается с проблемой с использованием аккордеонов в вкладках, первоначально неактивные аккордеоны не отображают их содержимое правильно, когда выбрана их вкладка. Просматривая, я вижу, что причина этого в том, что неактивные вкладки имеют отображение: нет изначально, поэтому высота divs внутри аккордеона не вычисляется правильно. Ни одно из предлагаемых решений не работает для меня. Кто-нибудь преодолел это или работал?
Вот пример кода:
<!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>
$("#accordion").accordion();
$("#tabs").tabs();
Возможно, вам нужно левое выравнивание.
.ui-accordion-header{
text-align: left;
}
удача
После прочтения заявленной проблемы у меня сложилось впечатление, что проблема, с которой я столкнулся, имеет сходный характер. Использование функции аккордеона внутри вкладки заставляло мой контент аккордеона содержать полосу прокрутки, функцию, которую я не хотел.
По какой-то причине существующее решение не помогло мне.
Решение, которое я нашел, состояло в том, чтобы перезаписать настройку по умолчанию для автокоррекции autoHeight (по умолчанию true, переписать на false)
$("#accordion").accordion({
autoHeight: false
});
$('#tabs').tabs();
Инициализировать аккордеон при активации вкладки:
Пример:
$('.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>
$( "#tabs" ).tabs({
load: function(event, ui) {
$("#"+ui.panel.id+" .accordians:first").accordion();
}
});
Это сработало при использовании ajax html с вкладками.
Ничто из этого не помогло мне. Для меня трюк состоял в том, чтобы перейти от использования уникальных идентификаторов div для каждого аккордеона к идентификации одного класса для всех аккордеонов. То есть, измените: <div id="accordion1>, <div id="accordion2>,
и т.д. На <div class="accordion">
на каждой вкладке.
Вам также может потребоваться добавить к вашей функции $(document).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>
См
http://bugs.jqueryui.com/ticket/5601
.ui-helper-clearfix {display: block; мин-ширина: 0; переполнение: скрыто; }
просто внимательно прочитайте http://docs.jquery.com/UI/Tabs# есть ответ. это самый простой способ