切换选项卡的按钮跳过第一个选项卡

Posted

技术标签:

【中文标题】切换选项卡的按钮跳过第一个选项卡【英文标题】:Button for toggle tabs skips first tab 【发布时间】:2018-07-03 09:10:19 【问题描述】:

我有由 2 种按钮控制的选项卡:

    常规 BootStrap 选项卡按钮 - (ul li) - 左侧的紫色圆形按钮 - 我们称它们为“侧边栏按钮”。

    用于按顺序切换选项卡的外部按钮(从第一个到最后一个并返回 - 从最后一个到第一个) - 在选项卡下 - 我们称之为“切换按钮”。

问题是这样的:

单击“切换”按钮时 - 选项卡按其降序导航,正如它们应有的那样。 但是,当切换到达最后一个选项卡时 - 它应该返回到第一个选项卡 - 但它不会 - 它“跳过”该选项卡,然后再单击一次,然后传递到第二个选项卡.... 我检查了所有负责触发选项卡的类 - 看起来很好....

/**
 * Created by Roy Barak on 21-Jan-18.
 */
$(document).ready(function() 


  $('.tabs_div > li').on('click', function() 

    $("span").removeClass("active_bullet");
    $("span").addClass("tab_circle tab_toggler");
    if ($(this).find('span').hasClass('active_bullet')) 

      return;
     else 
      $(this).find('span').removeClass('tab_circle tab_toggler');
      $(this).find('span').addClass('active_bullet');
    


  );


  $('.next_btn').click(function() 
    $.each($('.tabs_div > li'), function() 
      $(this).find('a').find('span').removeClass('active_bullet');
      if ($(this).attr('class')) 

        $(this).find('a').find('span').addClass('active_bullet');
      

    );

    if ($('.tabs_div > li:last-child').hasClass('active')) 

      console.log(123);
      /*  $('.next_btn.tab_circle.tab_toggler').css("transform", "rotateX(180deg)");
       $('.tabs_div > li:last-child').removeClass('active');
       $('.tabs_div > li:first-child').addClass('active'); */
     else 
      console.log($('.tabs_div > .active').next('li'));
      $('.tabs_div > .active').next('li').find('a').trigger('click');
    

  );
);
/* Styles go here */


/* line 1, ../../../sass/parme_vous_stylesheet.scss */

.content-wrapper.parme_vous_page 
  background-image: repeating-linear-gradient(-45deg, #7cd4cf, #7cd4cf 1.5px, #49c8c1 2px, #49c8c1 4px);



/* line 5, ../../../sass/parme_vous_stylesheet.scss */

.parme_vous_wrapper 
  display: flex;
  width: 100%;
  height: 100vh;
  align-items: center;
  padding: 45px;



/* line 16, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu>.sidebar-item-special.active 
  background: none;
  background-image: linear-gradient(90deg, #7cd4cf, rgba(124, 212, 207, 0)), repeating-linear-gradient(-45deg, #7cd4cf, #7cd4cf 1.5px, #49c8c1 2px, #49c8c1 4px);



/* line 21, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu>.sidebar-item-special.active>a 
  padding: 13px 17px 13px 25% !important;
  display: block !important;



/* line 25, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu>.sidebar-item-special.active>a>span 
  color: white !important;



/* line 31, ../../../sass/parme_vous_stylesheet.scss */

.links_hidden 
  visibility: hidden;



/* line 35, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu .sidebar-item-special.active:before 
  right: -1px;
  top: 31%;
  content: " ";
  position: absolute;
  pointer-events: none;
  margin-top: -30px;
  width: 21px;
  height: 30px;
  /* background: #f00; */
  background-image: repeating-linear-gradient(-45deg, #7cd4cf, #7cd4cf 1.5px, #49c8c1 2px, #49c8c1 4px);
  -webkit-mask-image: radial-gradient(circle 10px at 0 0, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 20px, #000000 21px);
  z-index: -1;



/* line 51, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu .sidebar-item-special.active:after 
  right: -1px;
  /* top: 103%; */
  content: " ";
  position: absolute;
  pointer-events: none;
  margin-top: -30px;
  width: 21px;
  bottom: -20px;
  height: 30px;
  transform: rotateX(180deg);
  /* background: #f00; */
  background-image: repeating-linear-gradient(45deg, #7cd4cf, #7cd4cf 1.5px, #49c8c1 2px, #49c8c1 4px);
  -webkit-mask-image: radial-gradient(circle 10px at 0 0, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 20px, #000000 21px);
  z-index: -1;



/* line 68, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu .sidebar-item-special.active:before 
  right: -1px;
  top: 31%;
  content: " ";
  position: absolute;
  pointer-events: none;
  margin-top: -30px;
  width: 21px;
  height: 30px;
  /* background: #f00; */
  background-image: repeating-linear-gradient(-45deg, #7cd4cf, #7cd4cf 1.5px, #49c8c1 2px, #49c8c1 4px);
  -webkit-mask-image: radial-gradient(circle 10px at 0 0, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 20px, #000000 21px);
  z-index: -1;



/* line 84, ../../../sass/parme_vous_stylesheet.scss */

.remove_pseudo:before 
  width: 0px !important;
  height: 0px !important;



/* line 90, ../../../sass/parme_vous_stylesheet.scss */

.remove_pseudo:after 
  width: 0px !important;
  height: 0px !important;



/* line 96, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu,
.user-panel,
.sidebar-menu>li.header 
  overflow: inherit !important;



/* line 101, ../../../sass/parme_vous_stylesheet.scss */

.sidebar-menu,
.user-panel,
.sidebar-menu>li.header 
  overflow: inherit !important;



/* line 106, ../../../sass/parme_vous_stylesheet.scss */

.parme_vous_icon 
  width: 200px;
  height: 200px;
  background-color: #3f4760;



/* line 112, ../../../sass/parme_vous_stylesheet.scss */

.links_col 
  min-width: 160px;
  min-height: 200px;
  border-radius: 15px;
  background-color: white;
  overflow: hidden;
  margin-bottom: 25px;
  -webkit-box-shadow: 11px 10px 31px -8px rgba(0, 0, 0, 0.47);
  -moz-box-shadow: 11px 10px 31px -8px rgba(0, 0, 0, 0.47);
  box-shadow: 11px 10px 31px -8px rgba(0, 0, 0, 0.47);



/* line 125, ../../../sass/parme_vous_stylesheet.scss */

.logo_header 
  padding-top: 10%;
  text-align: center;
  min-height: 100px;



/* line 132, ../../../sass/parme_vous_stylesheet.scss */

.logo_header img 
  width: 55px;



/* line 136, ../../../sass/parme_vous_stylesheet.scss */

.logo_footer 
  padding: 15px;
  color: white;
  text-align: center;
  background-color: #3f4760;
  min-height: 100px;



/* line 144, ../../../sass/parme_vous_stylesheet.scss */

.logo_footer p:nth-child(1) 
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;



/* line 149, ../../../sass/parme_vous_stylesheet.scss */

.logo_footer p:nth-child(2),
.logo_footer p:nth-child(3) 
  font-family: 'Roboto', sans-serif;
  font-size: 11px;
  color: #aaadb5;



/* line 156, ../../../sass/parme_vous_stylesheet.scss */

.links_buttons.parme_vous_bullets 
  text-align: center;
  margin-right: 2%;



/* line 161, ../../../sass/parme_vous_stylesheet.scss */

#myTab 
  list-style-type: none;
  display: inline-block;
  padding: 0px;
  margin: 0px;



/* line 168, ../../../sass/parme_vous_stylesheet.scss */

#myTab>li>a>span.tab_circle 
  /*border: 2px solid white;*/
  background-color: #5d3c95;
  height: 10px;
  border-radius: 50%;
  width: 10px;



/* line 176, ../../../sass/parme_vous_stylesheet.scss */

.active_bullet 
  border: 2px solid white;
  height: 18px;
  border-radius: 50%;
  display: inline-block !important;
  width: 18px;



/* line 184, ../../../sass/parme_vous_stylesheet.scss */

#myTab>li>a>span.tab_toggler 
  display: inline-block !important;
  float: none !important;
  font-size: 20px;
  color: white;



/* line 192, ../../../sass/parme_vous_stylesheet.scss */

.tab_footer 
  width: 100%;
  display: flex;
  justify-content: center;



/* line 198, ../../../sass/parme_vous_stylesheet.scss */

.next_btn:before 
  font-family: FontAwesome;
  content: "\f063";
  position: relative;
  border-radius: 73px;
  border: 8px solid white;
  background-color: white;
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://rawgit.com/leafn0de/bootstrap-tabdrop/master/build/bootstrap-tabdrop.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<link href="https://rawgit.com/leafn0de/bootstrap-tabdrop/master/build/bootstrap-tabdrop.css" rel="stylesheet" />
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="content-wrapper parme_vous_page" style="min-height: 901px;">

  <div class="page_container parme_vous_page">

    <div class="parme_vous_wrapper">
      <div class="links_buttons parme_vous_bullets">
        <ul id="myTab" class="tabs_div">


          <li class="active"><a data-target="#0tab" data-toggle="tab" aria-expanded="true"><span class="active_bullet"></span></a></li>

          <li class=""><a data-target="#1tab" data-toggle="tab" aria-expanded="false"><span class="tab_circle tab_toggler"></span></a></li>

          <li class=""><a data-target="#2tab" data-toggle="tab" aria-expanded="false"><span class="tab_circle tab_toggler"></span></a></li>

        </ul>
      </div>

      <div class="links_cont parme_vous_cont">

        <div class="tab-content">
          <div class="tab-pane active" id="0tab">


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Blog</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Mon compte</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Blog</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>facebook</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Mon compte</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Tweeter</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>

          </div>
          <div class="tab-pane" id="1tab">


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Test 1</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Test 2</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Linkedin</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Linkedin</p>
                    <p>Linkedin</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Tweeter</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Facebook</p>
                    <p>Facebook</p>
                  </div>
                </div>
              </div>
            </div>

          </div>
          <div class="tab-pane" id="2tab">


            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Test 3</p>
                    <p>Test 3</p>
                  </div>
                </div>
              </div>
            </div>

            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>Gmail</p>
                    <p>Lorem ipsum dolor sit amet consectuer</p>
                  </div>
                </div>
              </div>
            </div>
            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col links_hidden">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>tmp-placeholder</p>
                    <p>tmp-placeholder</p>
                  </div>
                </div>
              </div>
            </div>
            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col links_hidden">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>tmp-placeholder</p>
                    <p>tmp-placeholder</p>
                  </div>
                </div>
              </div>
            </div>
            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col links_hidden">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>tmp-placeholder</p>
                    <p>tmp-placeholder</p>
                  </div>
                </div>
              </div>
            </div>
            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-6">

              <div class="links_col links_hidden">
                <div class="parme-vous_links">
                  <div class="logo_header"><img src="">
                  </div>
                  <div class="logo_footer">
                    <p>tmp-placeholder</p>
                    <p>tmp-placeholder</p>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="tab_footer">
            <span class="next_btn tab_circle tab_toggler"></span>

          </div>

        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

【参考方案1】:

这是工作代码。还有更新的小提琴http://jsfiddle.net/etuokpbt/2/

  $(document).ready(function() 


      $('.tabs_div > li').on('click', function() 

    $("span").removeClass("active_bullet");
    $("span").addClass("tab_circle tab_toggler");
    if ($(this).find('span').hasClass('active_bullet')) 

      return;
     else 
      $(this).find('span').removeClass('tab_circle tab_toggler');
      $(this).find('span').addClass('active_bullet');
    


  );


  $('.next_btn').click(function() 
    $.each($('.tabs_div > li'), function() 
      $(this).find('a').find('span').removeClass('active_bullet');
      if ($(this).attr('class')) 

        $(this).find('a').find('span').addClass('active_bullet');
      

    );

      var next = $('.tabs_div > .active').next('li');
      console.log(next)
      if(!next.length)
         next = $('.tabs_div > li:first-child');
      

      next.find('a').trigger('click');

  );
);

【讨论】:

以上是关于切换选项卡的按钮跳过第一个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

javascript如何实现浏览器选项卡的切换?

如何从另一个选项卡上的场景切换或弹出选项卡式应用程序中第一个选项卡的第二个场景?

使用 Twitter Bootstrap 触发导航选项卡的按钮

使用选项卡第二次返回片段显示空白片段

wpf 实现多个选项卡左右移动

从单独的 UIViewController 切换 UITabBarController 选项卡[重复]