Переключатель табов в самих вкладках
Здравствуйте!
Пытаюсь немного переделать код, полученный на этом форуме, для того что бы переключатели табов находились в самих вкладках этого таба (что бы ниже можно было добавлять еще информацию)... <!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <style type='text/css'> .box { display: none; padding: 0px !important; background-color: #FFF; } .box.visible { display: block; padding: 10px; } ul.tabs { height: 27px; background: #FFF; border-bottom: 1px solid #777; padding: 0 4px; overflow: hidden; list-style: none; } .tabs li.current, .tabs li:hover { background-color:#52c8ff; color:#FFFFFF; border-color:#52c8ff; border-left-style: solid; border-right-style: solid; border-top-style: solid; } .tabs li { float: left; color: grey; line-height: 27px; margin-right: 1px !important; padding: 0 7px 10px 8px !important; font-weight: bold; cursor: pointer; } .tabs li.current span { color: #FFF; } .tabs li span { float: left; padding: 0 11px 0 0; height: 27px; color: #FFF; } </style> <script type='text/javascript'> $(function () { $('ul.tabs').delegate('li:not(.current)', 'click', function () { act(this); }) function act(Obj){ $(Obj).addClass('current').siblings().removeClass('current') .parents('div.section').find('div.box').eq($(Obj).index()) .show().siblings('div.box').hide(); }; }) </script> </head> <body> <div class="section"> <!-- если переключатели стоят здесь, то все работает без проблем, но я хочу, что бы они были в самих табах <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> --> <div class="box visible">содержимое вкладки 1 <div>Здесь какая-то информация</div> <div>Здесь потом будет картинка</div> <!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"--> <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> <div>А здесь еще какая-то информация</div> </div> <div class="box">содержимое вкладки 2 <div>Здесь какая-то информация</div> <div>Здесь потом будет картинка</div> <!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"--> <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> <div>А здесь еще какая-то информация</div> </div> <div class="box">содержимое вкладки 3 <div>Здесь какая-то информация</div> <div>Здесь потом будет картинка</div> <!-- а вот сюда я хочу вставить переключатель табов (типа буллетов), но так "глючит"--> <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> <div>А здесь еще какая-то информация</div> </div> </div> </body> </html> При переключении табов таким способом периодически "глючит" переключатель - понимаю, что это происходит из-за того, что разным элементам li в различных вкладках присваивается класс "current", но как это исправить не знаю (( |
Igorsrt,
подожду толмача |
Цитата:
p.s. Хотел бы я так же понимать в скриптах - как этому научиться? ( |
Igorsrt,
Цитата:
|
))
я хочу, что бы переключатели табов были в самих вкладках, т.е. что бы в этих самых вкладках, ниже значков переключателей можно было добавить еще какую-то информацию... что-то типа такого: https://drive.google.com/file/d/0B4l...ew?usp=sharing |
Igorsrt,
сделайте html с css и напишите как это должно работать, может быть тогда станет понятнее. |
Igorsrt,
Глючит из-за того, что у вас один и тот же переключатель <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> присутствует три раза. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
...)))
я хочу, что бы у меня по середине вкладки таба были переключатели (не сверху, не снизу, а именно в середине, что бы можно было вставлять контент для вкладок выше или ниже этих переключателей) ...Возможно так делать и нельзя, и нужно использовать свойство css position: absolute... но я боюсь, что это скажется на адаптивности |
|
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <style type='text/css'> .box { display: none; padding: 0px !important; background-color: #FFF; } .box.visible { display: block; padding: 10px; } ul.tabs { height: 27px; background: #FFF; border-bottom: 1px solid #777; padding: 0 4px; overflow: hidden; list-style: none; } .tabs li.current, .tabs li:hover { background-color:#52c8ff; color:#FFFFFF; border-color:#52c8ff; border-left-style: solid; border-right-style: solid; border-top-style: solid; } .tabs li { float: left; color: grey; line-height: 27px; margin-right: 1px !important; padding: 0 7px 10px 8px !important; font-weight: bold; cursor: pointer; } .tabs li.current span { color: #FFF; } .tabs li span { float: left; padding: 0 11px 0 0; height: 27px; color: #FFF; } </style> <script type='text/javascript'> $(function () { $('ul.tabs').delegate('li:not(.current)', 'click', function () { act(this); }) function act(Obj){ $(Obj).addClass('current').siblings().removeClass('current'); var tabId = ($(Obj).index() + 1).toString(); $('.info').html('Здесь какая-то информация ' + tabId); $('.pict').html('Здесь потом будет картинка ' + tabId); $('.add').html('А здесь еще какая-то информация ' + tabId); }; }) </script> </head> <body> <div class="section"> <div class="box visible"> <div class='info'>Здесь какая-то информация 1</div> <div class='pict'>Здесь потом будет картинка 1</div> </div> <ul class="tabs"> <li class="current">Вкладка 1</li> <li>Вкладка 2</li> <li>Вкладка 3</li> </ul> <div class='add'>А здесь еще какая-то информация 1</div> </div> </body> </html> |
Igorsrt,
для структуры <div class="tabs"> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <div> new 1 </div> <div> new 2 </div> <div> new 3 </div> </div> <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .tabs > div { display: none; } .tabs > ul > li.current { background-color: #52C8FF; } .tabs > ul > li { display: inline-block; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $(".tabs").each(function(indx, el) { var li = $(">ul>li", el), divs = $(">div", el); li.on("click", function(event) { event.preventDefault(); var i = li.index(this); li.not($(this).toggleClass("current")).removeClass("current"); divs.not(divs.eq(i).toggle()).hide() }) }) }); </script> </head> <body> <div class="tabs"> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> <div> <div class="tabs"> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <div> new 1 </div> <div> new 2 </div> <div> new 3 </div> </div> </div> <div> test 2 add tabs </div> <div> test 3 add tabs </div> </div> </body> </html> |
Igorsrt,
http://api.jqueryui.com/tabs/ |
что-то, я не понял... или это не то (
В первом случае (коде Рони), весь контент "засунут" в скрипт и к нему подставляется ID таба? |
Цитата:
|
Igorsrt,
Цитата:
Весь контент + ID таба засунут в скрипт для примера. У вас откуда появляется контент в табах? В скрипте по конкретному ID таба можно брать контент с сервера или выбирать из заранее загруженного массива - совершенно необязательно иметь для каждого таба заранее расписанный html |
Цитата:
контент в табах появляется из php функции... насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в раных div присвоены разным классам... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current? |
Igorsrt,
Цитата:
Насчет очистки - удалите сначала класс у всех, потом назначьте нужному. |
Цитата:
контент в табах появляется из php функции... насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в разных div присвоены разные классы... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current? |
Igorsrt,
Не понял - почему повтор? Цитата:
|
Часовой пояс GMT +3, время: 02:41. |