2017-08-28 107 views
0

我已经使用下一个和上一个按钮功能创建了选项卡内容。但是下一个和上一个按钮功能不起作用。我已经使用jquery.min.js版本1.11.1版本。我已经创建了如下的代码片段。我已经提到this question并创建了答案中提到的功能。但仍然不起作用。下一个和上一个按钮功能不起作用

$("ul.kyc-tab-list li a").click(function() { 
 
     $("ul.kyc-tab-list li a").removeClass("active"); 
 
     $(this).addClass("active"); 
 
    }); 
 

 
    $(".tab-btn1").click(function() { 
 
     $("#tab1").show(); 
 
     $("#tab2").hide(); 
 
     $("#tab3").hide(); 
 
     $("#tab4").hide(); 
 
     $("#tab5").hide(); 
 
    }); 
 

 
    $(".tab-btn2").click(function() { 
 
     $("#tab1").hide(); 
 
     $("#tab2").show(); 
 
     $("#tab3").hide(); 
 
     $("#tab4").hide(); 
 
     $("#tab5").hide(); 
 
    }); 
 

 
    $(".tab-btn3").click(function() { 
 
     $("#tab1").hide(); 
 
     $("#tab2").hide(); 
 
     $("#tab3").show(); 
 
     $("#tab4").hide(); 
 
     $("#tab5").hide(); 
 
    }); 
 

 
    $(".tab-btn4").click(function() { 
 
     $("#tab1").hide(); 
 
     $("#tab2").hide(); 
 
     $("#tab3").hide(); 
 
     $("#tab4").show(); 
 
     $("#tab5").hide(); 
 
    }); 
 

 
    $(".tab-btn5").click(function() { 
 
     $("#tab1").hide(); 
 
     $("#tab2").hide(); 
 
     $("#tab3").hide(); 
 
     $("#tab4").hide(); 
 
     $("#tab5").show(); 
 
    }); 
 
    
 
    
 
    $('#btnNext').click(function() { 
 

 

 
     // get current tab 
 

 
     var currentTab = $(".tab.active"); 
 

 
     // get the next tab, if there is one 
 
     var newTab = currentTab.next(); 
 

 
     // at the end, so go to the first one 
 
     if (newTab.length === 0) { 
 
      newTab = $(".tab").first(); 
 
     } 
 

 
     currentTab.removeClass('active'); 
 
     // add active to new tab 
 
     newTab.addClass('active'); 
 
    }); 
 

 
    $('#btnPrevious').click(function() { 
 
     // get current tab 
 
     var currentTab = $(".tab.active"); 
 

 
     // get the previous tab, if there is one 
 
     var newTab = currentTab.prev(); 
 

 
     // at the start, so go to the last one 
 
     if (newTab.length === 0) { 
 
      newTab = $(".tab").last(); 
 
     } 
 

 
     currentTab.removeClass('active'); 
 
     // add active to new tab 
 
     newTab.addClass('active'); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 

 
<section> 
 

 
    <div class="kyc-tab-wrapper"> 
 
         <ul class="kyc-tab-list"> 
 
         <li> 
 
          <a href="javascript:void(0);" class="tab active tab-btn1"><span>01</span>Customer</a> 
 
         </li> 
 
         <li> 
 
          <a href="javascript:void(0);" class="tab tab-btn2"><span>02</span>Contact/Promotors</a> 
 
         </li> 
 
         <li> 
 
          <a href="javascript:void(0);" class="tab tab-btn3"><span>03</span>Bank/Business</a> 
 
         </li> 
 
         <li> 
 
          <a href="javascript:void(0);" class="tab tab-btn4"><span>04</span>Other</a> 
 
         </li> 
 
         <li> 
 
          <a href="javascript:void(0);" class="tab tab-btn5"><span>05</span>Finish</a> 
 
         </li> 
 
        </ul> 
 
        
 
         <div class="kyc-tab-content" id="tab1"> 
 
         
 
         tab 1 
 
         </div> 
 
           <div class="kyc-tab-content" id="tab2"> 
 
         tab 2 
 
         </div>   
 
           </div> 
 
           
 
            <div class="kyc-tab-content" id="tab3"> 
 
             tab 3 
 
         
 
            </div> 
 
                <div class="kyc-tab-content" id="tab4"> 
 
                tab 4 
 
                </div> 
 
                 <div class="kyc-tab-content" id="tab5"> 
 
            
 
            tab 5</div> 
 
                 
 
                 <div class="kyc-tab-form-btn-wrap"> 
 
         <button id="btnPrevious" style="display:none"> Previous</button> 
 
         <button id="btnNext">Next </button> 
 
        </div> 
 
         </div> 
 
    </div> 
 
</section> 
 

 

 
</div>

+1

您可以创建一个的jsfiddle为了这? – adiga

回答

1

因此,这些都是我对你的代码进行更改:

所有的
  1. 一是kyc-tab-wrapper结束标记后tab2关闭- 固定的。

  2. 而是有多个监听器来切换标签页,则可以在第一监听器本身有这样的:

    $(".kyc-tab-content").hide(); 
    $($(this).attr('class').split(' ').find(function(e) { 
        return e.startsWith('tab-btn'); 
    }).replace('tab-btn', '#tab')).show(); 
    
  3. 下一个以前按钮不起作用,你正在做的prevnexta - 你应该用lili从事的运动是兄弟姐妹:

    currentTab.closest('li').prev().find('a'); 
    currentTab.closest('li').next().find('a'); 
    
  4. 您可以只需触发器单击该选项卡而不是再次进行登录。

  5. 还增加了一个初始触发显示第一个选项卡使用$(".tab.active").trigger('click')

观看演示以下时,页面加载:

$("ul.kyc-tab-list li a").click(function() { 
 
    $("ul.kyc-tab-list li a").removeClass("active"); 
 
    $(this).addClass("active"); 
 
    /* Do this instead of multiple listeners */ 
 
    $(".kyc-tab-content").hide(); 
 
    $($(this).attr('class').split(' ').find(function(e) { 
 
    return e.startsWith('tab-btn'); 
 
    }).replace('tab-btn', '#tab')).show(); 
 
}); 
 

 
// active tab load initially 
 
$(".tab.active").trigger('click'); 
 

 

 
$('#btnNext').click(function() { 
 
    var currentTab = $(".tab.active"); 
 
    var newTab = currentTab.closest('li').next().find('a'); 
 
    if (newTab.length === 0) { 
 
    newTab = $(".tab").first(); 
 
    } 
 
    newTab.trigger('click'); 
 
}); 
 

 
$('#btnPrevious').click(function() { 
 
    var currentTab = $(".tab.active"); 
 
    var newTab = currentTab.closest('li').prev().find('a'); 
 
    if (newTab.length === 0) { 
 
    newTab = $(".tab").last(); 
 
    } 
 
    newTab.trigger('click'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 
    <section> 
 
    <div class="kyc-tab-wrapper"> 
 
     <ul class="kyc-tab-list"> 
 
     <li> 
 
      <a href="javascript:void(0);" class="tab active tab-btn1"><span>01</span>Customer</a> 
 
     </li> 
 
     <li> 
 
      <a href="javascript:void(0);" class="tab tab-btn2"><span>02</span>Contact/Promotors</a> 
 
     </li> 
 
     <li> 
 
      <a href="javascript:void(0);" class="tab tab-btn3"><span>03</span>Bank/Business</a> 
 
     </li> 
 
     <li> 
 
      <a href="javascript:void(0);" class="tab tab-btn4"><span>04</span>Other</a> 
 
     </li> 
 
     <li> 
 
      <a href="javascript:void(0);" class="tab tab-btn5"><span>05</span>Finish</a> 
 
     </li> 
 
     </ul> 
 
     <div class="kyc-tab-content" id="tab1">tab 1</div> 
 
     <div class="kyc-tab-content" id="tab2">tab 2</div> 
 
     <div class="kyc-tab-content" id="tab3">tab 3</div> 
 
     <div class="kyc-tab-content" id="tab4">tab 4</div> 
 
     <div class="kyc-tab-content" id="tab5">tab 5</div> 
 
     <div class="kyc-tab-form-btn-wrap"> 
 
     <button id="btnPrevious"> Previous</button> 
 
     <button id="btnNext">Next </button> 
 
     </div> 
 
    </div> 
 
    </section> 
 
</div>

2

对于Next按钮工作更改以下线条状的下方。

// get current tab 
var currentTab = $(".tab.active").closest("li"); 
//get the next tab, if there is one 
var newTab = currentTab.next().find("a.tab"); 
//... 
currentTab.find(".tab").removeClass('active'); 

Prev按钮也做类似的更改。

// get current tab 
var currentTab = $(".tab.active").closest("li"); 
// get the previous tab, if there is one 
var newTab = currentTab.prev().find("a.tab"); 
//... 
currentTab.find(".tab").removeClass('active'); 

Fiddle Demo

在你的代码的问题是你没有正确对焦下一首或上a标签。

相关问题