По-видимому, официальное решение этой проблемы не существует. Мне удалось самостоятельно свернуть один, который будет работать до тех пор, пока вы можете назначить уникальный идентификатор для каждой суб-вкладки.
Идея в том, что на самом деле вам не нужно указывать страницу, на которой открывается верхняя вкладка, потому что она может быть выведена из поиска запрашиваемой подзаголовки. Таким образом, в вашей ссылке, вам нужно будет только ссылаться на вложенную вкладку, например, так:
http://www.blah.com/tabs.aspx#profile
Перед тем, как приступить к работе, вот демо показывая это в действии: http://jsfiddle.net/CrAU7/
Допустим, у вас есть HTML структура, как так:
<div class="wrap">
<!-- the tabs -->
<ul class="tabs">
<li><a href="#big1">Tab 1</a></li>
<li><a href="#big2">Tab 2</a></li>
<li><a href="#big3">Tab 3</a></li>
</ul>
<!-- tab "panes" -->
<div class="pane" id="big1">
<p>#1</p>
<!-- the tabs -->
<ul class="tabs">
<li><a href="#big1small1">Tab 1</a></li>
<li><a href="#big1small2">Tab 2</a></li>
<li><a href="#big1small3">Tab 3</a></li>
</ul>
<!-- tab "panes" -->
<div class="pane" id="big1small1">Tab 1 - First tab content.</div>
<div class="pane" id="big1small2">Tab 1 - Second tab content</div>
<div class="pane" id="big1small3">Tab 1 - Third tab content</div>
</div>
<div class="pane" id="big2">
<p>#2</p>
<!-- the tabs -->
<ul class="tabs">
<li><a href="#big2small1">Tab 1</a></li>
<li><a href="#big2small2">Tab 2</a></li>
<li><a href="#big2small3">Tab 3</a></li>
</ul>
<!-- tab "panes" -->
<div class="pane" id="big2small1">Tab 2 - First tab content.</div>
<div class="pane" id="big2small2">Tab 2 - Second tab content</div>
<div class="pane" id="big2small3">Tab 2 - Third tab content</div>
</div>
<div class="pane" id="big3">
<p>#3 </p>
<!-- the tabs -->
<ul class="tabs">
<li><a href="#big3small1">Tab 1</a></li>
<li><a href="#big3small2">Tab 2</a></li>
<li><a href="#big3small3">Tab 3</a></li>
</ul>
<!-- tab "panes" -->
<div class="pane" id="big3small1">Tab 3 - First tab content.</div>
<div class="pane" id="big3small2">Tab 3 - Second tab content</div>
<div class="pane" id="big3small3">Tab 3 - Third tab content</div>
</div>
</div>
важно отметить, что я дал Язычок Панели задач уникальный идентификатор, и HREF ТАВ является тот же идентификатор, с префиксом хэш. Тогда вам нужна функция, как это:
function TabByHash(hash) {
var $myTab = $(hash);
if ($myTab.size() != 0) {
//alert('hi!');
var $topTab = $myTab.parent().closest('.pane');
if ($topTab.size() != 0) {
$('a[href=#' + $topTab.attr('id') + ']').click();
}
$('a[href=#' + $myTab.attr('id') + ']').click();
}
}
На странице загрузки, вы хотите, чтобы вызвать функцию с хеш-части URL: TabByHash(window.location.hash);
Это потом смотрит на вкладку панели с соответствующим идентификатором. Если панель находится внутри родительской панели, она сначала активирует эту родительскую панель, а затем активирует запрашиваемую панель. В противном случае он просто активирует запрашиваемую панель. Надеюсь, это поможет вам.
ПРИМЕЧАНИЕ. Из-за ограничений на демонстрацию jsFiddle я привязал функцию TabByHash
к привязке кликов, но в вашей ситуации вам нужно просто вызвать ее при загрузке страницы.
Есть ли особая причина, по которой вы пошли с сторонней библиотекой вместо jQueryUI? – Ender
jQueryUI не имеет встроенной возможности добавить #hash в URL для переключения вкладок, я посмотрел. Для этого есть много решений для SO, но никто из них не работал для меня. jQuery Tools переносит его изначально, я мог бы стилизовать его, но я хотел (не заботясь о ThemeRoller), и API так же эффективен.Я полагаю, что основной вопрос, который у меня есть, - как указать URL-адрес, который по существу содержит 2 параметра? Может быть, я должен переключиться на простое использование запросов? – dmackerman