Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переключатель табов в самих вкладках (https://javascript.ru/forum/dom-window/67121-pereklyuchatel-tabov-v-samikh-vkladkakh.html)

Igorsrt 30.01.2017 13:28

https://drive.google.com/file/d/0B4l...ew?usp=sharing

Dilettante_Pro 30.01.2017 13:42

<!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>

рони 30.01.2017 14:34

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>

рони 30.01.2017 14:38

Igorsrt,
http://api.jqueryui.com/tabs/

Igorsrt 30.01.2017 15:33

что-то, я не понял... или это не то (
В первом случае (коде Рони), весь контент "засунут" в скрипт и к нему подставляется ID таба?

рони 30.01.2017 16:14

Цитата:

Сообщение от Igorsrt
весь контент "засунут" в скрипт и к нему подставляется ID таба?

не осилил

Dilettante_Pro 30.01.2017 16:46

Igorsrt,
Цитата:

Сообщение от Igorsrt
В первом случае (коде Рони), весь контент "засунут" в скрипт и к нему подставляется ID таба?

М.б. не Рони? Пост 12?
Весь контент + ID таба засунут в скрипт для примера. У вас откуда появляется контент в табах?
В скрипте по конкретному ID таба можно брать контент с сервера или выбирать из заранее загруженного массива - совершенно необязательно иметь для каждого таба заранее расписанный html

Igorsrt 30.01.2017 18:05

Цитата:

М.б. не Рони? Пост 12?
да, не Рони... дико извиняюсь ((
контент в табах появляется из php функции...
насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в раных div присвоены разным классам... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current?

Dilettante_Pro 30.01.2017 18:33

Igorsrt,
Цитата:

Сообщение от Igorsrt
контент в табах появляется из php функции...

В php можно сформировать json-файл сразу по всему контенту и грузить в таб по ID или подгружать с сервера при выборе конкретного таба

Насчет очистки - удалите сначала класс у всех, потом назначьте нужному.

Igorsrt 30.01.2017 18:40

Цитата:

М.б. не Рони? Пост 12?
да, не Рони... дико извиняюсь ((
контент в табах появляется из php функции...
насколько я понимаю, весь "геморой" в "моем" коде возникает из-за того что разным элементам li в разных div присвоены разные классы... Можно сделать так, что бы функция js "очищала" все элементы на странице (кроме нужного) от класса current?


Часовой пояс GMT +3, время: 15:21.