2017-09-08 12 views
0

アクティブなタブについて問題がありました。ビルド済みのタブに.append()を使用し、タブのデータを接続するためにhrefを使用しません。
タブをクリックすると、アクティブなタブのテキストが表示されます。
タブ2をクリックしたときに、アクティブなタブのテキストがタブ1になっています。
タブ2をもう一度クリックしてアクティブなタブをタブ2に変更する必要があります。 同じ問題は誰かが私を助けることを願っています。おかげさまで タブを2回クリックしてタブをアクティブなタブに変更する必要があります

<!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イベントの代わりclick。あなたはちょうどあなたがスニペットの下で見ることができ、クリックイベントの時に「addClass」メソッドを適用する必要が

$(".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

$(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タグがデフォルトで 'active'クラスをデフォルトで宣言していたので、あなたの要求通りに間違っていたので、特定のliをクリックしたときに 'active'クラスを追加する必要があります。その現在のliだけのための 'アクティブ'クラスを追加してください。 @YuJingYu –

関連する問題