jQuery UI Tabs hash
Добрый день, перейду сразу к описанию проблемы:
Есть страница с jquery ui tabs. Например URL [url]http://site.xx/page-1[/url] По кликам на вкладки в URL строке ничего не добавляется ( location.hash) Это не удобно. Нужно сделать так, чтобы hash все же дорисовывался, однако не просто так: http://site.xx/page-1#tab-1 [url]http://site.xx/page-1#tab-2[/url] Это будет дергать экран пользователя, а это не хорошо. Поэтому идея такая - передавать hash почти как get параметр, взять его из URL не сложно, а дергаться экран не будет. Вот пример того, как нужно (добавил id вкладки как параметр p= ) : http://site.xx/page-1#p=tab-1 [url]http://site.xx/page-1#p=tab-2[/url] Вот что у меня получилось:
$(".tabs").tabs({
select: function(event, ui) {
var param = '';
param = window.location.hash;
if(param.indexOf('p=') > 0)
{
var regexp = /#p=(.+)/i;
var hash = param.match(regexp)[1];
if(hash !== '' && hash != ui.tab.hash)
{
window.location.hash = '#p=' + ui.tab.hash.substr(1);
}
}
},
show: function(event, ui) {
var param = '';
param = window.location.hash;
if(param.indexOf('p=') > 0)
{
var regexp = /#p=(.+)/i;
var hash = param.match(regexp)[1];
if(hash !== '')
{
$('.tabs').tabs("select", hash);
}
}
}
});
Собственно суть проблемы: реализация очень емкая и подглючивает. Сталкивался ли кто с таким уже? Если не жалко, поделитесь решением :) Заранее благодарен. Ах да, чуть не забыл. По клику по табам, url (значение параметра p) должно меняться, чтобы непример можно было скопировать url и кинуть его кому-нибудь. Как бонус: более интересный вариант реализации: если табы вложенные, как тогда? Например каждая вкладка с табами содержит еще по 1 табу с тремя вкладками. Пока есть только размышления: передавать второй параметр, если есть вложенный таб, а в коде через find искать - есть ли у текущего tab вложенные, если да и параметр №2 передан, то делать оба активными, иначе по умолчанию первый из главного таба и первый из второго. Вот только как это закодать..... |
Я конечно понимаю, что это некропост, но все же. Гуглил как раз этот вопрос. Может кто что подскажет дельное.
|
| Часовой пояс GMT +3, время: 18:16. |