2017-09-08 9 views
0

활성 탭에 관한 문제가 있습니다. 내가 만든 탭에 .append()를 사용하고 href를 사용하여 탭의 데이터를 연결하지 않습니다.
.console log()를 클릭하면 활성 탭의 텍스트가 표시됩니다.
내 탭 2를 클릭했을 때 활성 탭의 텍스트가 여전히 탭 1입니다.
탭 2를 다시 클릭해야 활성 탭이 탭 2로 바뀝니다. 동일한 사용자가 보이지 않습니다. 문제 그래서 누군가가 나를 도울 수 있기를 바랍니다. 감사합니다. . 대신 click탭을 활성 탭으로 변경하려면 두 번 클릭해야합니다.

<!DOCTYPE html> 
     <html lang="en"> 
     <head> 
      <title>Bootstrap Example</title> 
      <meta charset="utf-8"> 
      <meta name="viewport" content="width=device-width, initial-scale=1"> 
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
     </head> 
     <body> 

     <div class="container"> 
      <h2>Dynamic Tabs</h2> 
      <ul class="nav nav-tabs"> 
      </ul> 
     </div> 

     <script> 
     $(document).ready(function(){ 
      for(i = 1;i <= 2 ; i++){ 
       renewid='tab_'+i; 
       if(i == 1){ 
       $('.nav-tabs').append("<li class='active'><a data-toggle='tab' id=" + renewid + ">Chart"+ [i] +"</a></li>"); 
       } 
       else{ 
       $('.nav-tabs').append("<li><a data-toggle='tab' id=" + renewid + ">Chart"+ [i] +"</a></li>"); 
       } 
      }; 
      $(".nav-tabs a").click(function(){ 
       alert('set_active = ' + $('.nav-tabs .active').text()); 
      }); 
     }); 
     </script> 

     </body> 
     </html> 

답변

0

사용 shown.bs.tab 이벤트입니다.

$(".nav-tabs a").on('shown.bs.tab', function() { 
    alert('set_active = ' + $('.nav-tabs .active').text()); 
}); 
+0

와우, 그것은 성공적으로 실행할 수 있습니다. 고마워요. 왜 방법을 나에게 바꾸어야하는지 설명 할 수 있습니까? – YuJingYu

+0

@YuJingYu 부트 스트랩 탭에서 사용할 수있는 이벤트를 보려면이 부분을 참조하십시오. 이벤트 유형을 변경하면 기존 코드가 올바르게 작동합니다. 'https : // www.w3schools.com/bootstrap/bootstrap_ref_js_tab.asp' –

0

당신은 당신이 조각 아래에서 볼 수, 클릭 이벤트가 발생했을 때 'addClass'방법을 적용해야합니다

$(document).ready(function(){ 
 
      
 
      for(i = 1;i <= 2 ; i++){ 
 
       renewid='tab_'+i; 
 
       if(i == 1){ 
 
       $('.nav-tabs').append("<li><a data-toggle='tab' id=" + renewid + ">Chart"+ [i] +"</a></li>"); 
 
       } 
 
       else{ 
 
       $('.nav-tabs').append("<li><a data-toggle='tab' id=" + renewid + ">Chart"+ [i] +"</a></li>"); 
 
       } 
 
      }; 
 
      $(".nav-tabs a").click(function(){ 
 
      $('.nav-tabs').find('li').removeClass('active'); 
 
      $(this).closest('li').addClass('active') 
 
       alert('set_active = ' + $('.nav-tabs .active').text()); 
 
      }); 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
      <h2>Dynamic Tabs</h2> 
 
      <ul class="nav nav-tabs"> 
 
      </ul> 
 
     </div>

+0

아, 작동합니다. 왜이 문제가 발생했는지 설명해 주시겠습니까? – YuJingYu

+0

추가 할 때 li 태그가 사용자의 요구 사항에 따라 잘못 설정된 '활성'클래스를 선언 했으므로 특정 li을 클릭 할 때 '활성'클래스를 추가해야하므로 사용자가 요구하는대로 잘못 입력했기 때문에 해당 현재 리에 대해서만 '활성'클래스 만 추가하십시오. @YuJingYu –