【问题标题】:JQuery tabs displaying previous tab content显示先前选项卡内容的 JQuery 选项卡
【发布时间】:2018-01-15 22:28:28
【问题描述】:

当我单击选项卡 2 时,它会与选项卡 1 一起显示内容。我尝试使用 prev() 隐藏前一个元素。但它隐藏了整个选项卡菜单,并且活动选项卡也没有改变颜色。我附上了下面的jsfiddle链接 https://jsfiddle.net/nn9bqpsn/1/

<div class="Tabs">
  <ul>
     <li id="tab1" class="Active">Tab 1</li>
     <li id="tab2">Tab 2</li>
     <li id="tab3">Tab 3</li>
  </ul>
</div>

<div id="tab1-content" class="Tab" style="display:none">
  <p>Tab 1 Content</p>
</div>

<div id="tab2-content" class="Tab" style="display:none">
  <p>Tab 2 Content</p>
</div>

<div id="tab3-content" class="Tab" style="display:none">
  <p>Tab 3 Content</p>
</div>
<script>
$(document).ready(function () {
    if ($('li #tab1 .active')) {
        $('#tab1-content').show();
    }
});

$('#tab1').click(function () {
 $('#tab1-content').prev().hide();
    $('#tab1-content').show();
});

 $('#tab2').click(function () {
 $('#tab2-content').prev().hide();
    $('#tab2-content').show();

});

 $('#tab3').click(function () {
  $('#tab3-content').prev().hide();
    $('#tab3-content').show();

});
</script>

我也尝试过使用带 href 的锚标记,但仍然无法正常工作。附加在 jsfiddle 下方,用于使用 href https://jsfiddle.net/cL42g4sb/

的选项卡

【问题讨论】:

标签: jquery html css


【解决方案1】:

这是我采取更长路线的一千个解决方案之一,但希望它能更好地解释功能。

工作 jsFiddle:Fiddle

 $(document).ready(function () {
        //Hide all Tabs on laod
        $('.Tab').hide();

        //Check which tab is active
        var activeOnLoad = $('.Tabs ul li.Active').attr("id");
        $('#'+activeOnLoad+'-content').show();

        //Handle click event
        $('.Tabs ul li').on('click', function(e){
            e.preventDefault();

          //Save clicked element to variable
           var clickedTab = $(this).attr("id");

          //Remove class from old tab
            $(this).parent().find('.Active').removeClass('Active');
          //Add Active class to clicked tab
            $(this).addClass('Active');

          //Hide all Tab elements
          $('.Tab').hide();

          //Show clicked Tab
          $('#'+clickedTab+'-content').show();
        });
    });

OP 新代码更新:

 $(document).ready(function () {
                //Hide all Tabs on laod
        $('.Tab').hide();

        //Check which tab is active
        var activeOnLoad = $('.Tabs ul li a.Active').attr("href");
        $(activeOnLoad).show();

        //Handle click event
        $('.Tabs ul li a').on('click', function(e){
            e.preventDefault();

          //Save clicked element to variable
          var clickedTab = $(this).attr("href");

          //Remove class from old tab
            $(this).parents('ul').find('.Active').removeClass('Active');
          //Add Active class to clicked tab
            $(this).addClass('Active');

          //Hide all Tab elements
          $('.Tab').hide();

          //Show clicked Tab
          $(clickedTab).show();
        });
    });

jsFiddle:jsFiddle

【讨论】:

  • 嗨.. 感谢您的回答.. 但为了使其更具动态性,我使用了
  • Tab 1 ..所以我使用 var activeOnLoad = $('.Tabs > ul > li.active > a').attr("href") 来获取href值..但它显示未定义
【解决方案2】:

您可以隐藏带有“TAB”类的元素,然后显示属性选项卡

...
    $('#tab1').click(function () {
        $('.Tab').hide();
        $('#tab1-content').show();
    });

    $('#tab2').click(function () {
        $('.Tab').hide();
        $('#tab2-content').show();

    });

    $('#tab3').click(function () {
        $('.Tab').hide();
        $('#tab3-content').show();

    });
....

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签