jQuery - вкладки внутри вкладок?

Я пытаюсь расположить вкладки внутри вкладок с помощью jQuery. Ниже приведены HTML, CSS и JS, которые я использую. Как я могу вставить пару вкладок в #tab2?

HTML

<ul class="tabs">
  <li><a href="#tab1">Podcasts</a></li>
  <li><a href="#tab2">Videos</a></li>
</ul>
<div id="tab1" class="tab_content">
  <p>test</p>
</div>
<div id="tab2" class="tab_content">
  <div id="tab2-1">                      <-- Tab 2-1 inside of #tab2
    <p>test</p>
  </div>
  <div id="tab2-2">                      <-- Tab 2-2 inside of #tab2
    <p>test</p>
  </div>
</div>

CSS

.tab_content { background:#fff;padding:10px;width:100% }
.tabs li { display:inline;list-style:none }
.tabs a { background:#7c7c7c;color:#dadada;display:inline-block }
.tabs a.active { background:#e32d2d;color:#fff }

JS

jQuery('ul.tabs').each(function(){
    // For each set of tabs, we want to keep track of
    // which tab is active and it's associated content
    var $active, $content, $links = jQuery(this).find('a');

    // If the location.hash matches one of the links, use that as the active tab.
    // If no match is found, use the first link as the initial active tab.
    $active = jQuery($links.filter('[href="'+location.hash+'"]')[0] || $links[0]);
    $active.addClass('active');

    $content = $($active[0].hash);

    // Hide the remaining content
    $links.not($active).each(function () {
        jQuery(this.hash).hide();
    });

    // Bind the click event handler
    jQuery(this).on('click', 'a', function(e){
        // Make the old tab inactive.
        $active.removeClass('active');
        $content.hide();

        // Update the variables with the new link and content
        $active = jQuery(this);
        $content = jQuery(this.hash);

        // Make the tab active.
        $active.addClass('active');
        $content.show();

        // Prevent the anchor's default click action
        e.preventDefault();
    });
});

person J82    schedule 17.07.2014    source источник
comment
Вам нужно определить еще один ul внутри #tab2 и рассматривать его как еще один элемент вкладок. Остерегайтесь не повторять идентификаторы.   -  person Teh SoTo    schedule 17.07.2014


Ответы (1)


Попробуй это,

<ul class="tabs">
    <li><a href="#tab1">Podcasts</a></li>
    <li><a href="#tab2">Videos</a></li>
</ul>
<div id="tab1" class="tab_content">
    <p>test</p>
</div>
<div id="tab2" class="tab_content">
    <ul class="tabs">   <!-- Add tabs here -->
        <li><a href="#tab2-1">Tab2-1</a></li>
        <li><a href="#tab2-2">Tab2-2</a></li>
    </ul>
    <div id="tab2-1">
        <p>test 1</p>
    </div>
    <div id="tab2-2">
        <p>test 2</p>
    </div>
</div>

Прямая демонстрация

person Rohan Kumar    schedule 17.07.2014
comment
Ах, забыл, что это должен был быть список. Спасибо! - person J82; 17.07.2014
comment
Как мы можем остаться на текущей подвкладке? Я могу сделать это для главной вкладки, используя «dataStore.getItem» и «dataStore.setItem». Но эта логика не применяется к вложенной вкладке, и вложенная вкладка по умолчанию продолжает устанавливать значение по умолчанию при обновлении страницы. - person Full Stack Developer - Java; 22.07.2016
comment
@StartCoding вам нужно установить выбранную вкладку, используя setItem, например setTime('selectedTab','#tab2'), затем при загрузке страницы вам нужно проверить, установлен ли уже selectedTab или не использовать getItem('selectedTab'), если он установлен, и элемент существует на странице (используя .length), а затем вызвать событие щелчка, например $(getItem('selectedTab')).trigger('click') . - person Rohan Kumar; 25.07.2016
comment
@Rohan Kumar Не могли бы вы взглянуть на это - stackoverflow.com/questions/38569190/ - person Full Stack Developer - Java; 25.07.2016
comment
В вашей живой демонстрации. Если я нажму на обновление страницы на вкладке 2-2, она не останется на вкладке 2-2. - person Full Stack Developer - Java; 25.07.2016
comment
Дорогой мой, я не писал код, который сохраняет текущую выбранную вкладку в cookies или в webstorage. Он работает, только если в href есть только hash. - person Rohan Kumar; 26.07.2016