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, время: 19:47. |