2016-06-14 94 views
1

私はユーザーがBootstrap UIタブでタブを追加したり削除したりできるようにするコードを持っています。私は成功裏にそれを作った、そしてはい、それはうまくいきます。jQueryブートストラップ動的タブ(追加と削除)

唯一の問題は、タブ名をソートしないことです。例えば、このようなタブがあります:私はTab 2を削除するとTab 1Tab 2Tab 3Tab 4Tab 5

だから、Tab 3Tab 2なり、ときに私その後、Tab 4はまたようにTab 3と...

になりますタブを削除すると、アクティブなタブにタブ1が表示されます(jsfiddleで確認してください)

私の2つの問題はありますか?

JSFiddleリンク:https://jsfiddle.net/cnycmLq0/

<div class="container"> 
    <div class="row"> 
     <div class="col-md-12"> 
      <p> 
       <button id="btn-add-tab" type="button" class="btn btn-primary pull-right">Add Tab</button> 
      </p> 
      <!-- Nav tabs --> 
      <ul id="tab-list" class="nav nav-tabs" role="tablist"> 
       <li class="active"><a href="#tab1" role="tab" data-toggle="tab">Tab 1</a></li> 
      </ul> 

      <!-- Tab panes --> 
      <div id="tab-content" class="tab-content"> 
       <div class="tab-pane fade in active" id="tab1">Tab 1 content</div> 
      </div> 
     </div> 
    </div> 
</div> 

JS:

$(document).ready(function() { 
     var tabID = 1; 
     $('#btn-add-tab').click(function() { 
      tabID++; 
      $('#tab-list').append($('<li><a href="#tab' + tabID + '" role="tab" data-toggle="tab">Tab ' + tabID + '<button class="close" type="button" title="Remove this page">×</button></a></li>')); 
      $('#tab-content').append($('<div class="tab-pane fade" id="tab' + tabID + '">Tab ' + tabID + ' content</div>')); 
     }); 
     $('#tab-list').on('click', '.close', function() { 
      var tabID = $(this).parents('a').attr('href'); 
      $(this).parents('li').remove(); 
      $(tabID).remove(); 

      //display first tab 
      var tabFirst = $('#tab-list a:first'); 
      tabFirst.tab('show'); 
     }); 

     var list = document.getElementById("tab-list"); 
    }); 

答えて

3

私はちょうどあなたのtabsをリセットし、そのtextを変更するfunctionを書かれています。主な部分はvarbutton htmlを格納し、グローバル変数としてbutton htmltabIDの両方を作成することです。 イベントでfunctionと呼ぶことができます。

var button='<button class="close" type="button" title="Remove this page">×</button>'; 
var tabID = 1; 
function resetTab(){ 
    var tabs=$("#tab-list li:not(:first)");//get all tabs except first tab 
    var len=1;//we do not want to reset 1st tab 
    $(tabs).each(function(k,v){ 
     len++;//increment it 
     $(this).find('a').html('Tab ' + len + button); //replace each tabs html with latest index and button html. 
    }) 
    tabID--;//decrement tabs count 
} 

Complete solution in Fiddle

+0

ことをありがとう!できます。しかし、私はあなたのコードに間違って何かを見た。たとえば、3つのタブを追加します。その後、Tab 2を削除してTab 3をTab 2にします。しかし、Tab 2(古いTab 3)がアクティブな場合、Tab 3の内容が表示されます。また、タブが削除されたときに前のタブに移動するにはどうすればよいですか?最初のタブに移動しますか? – Jacob

+0

これは正しいと思います。あなたが 'tab2'を削除していると実際には内容が必要ないので..' tab3'は基本的に 'tab2'の代わりに実際の' tab'であり、その内容は有効です。 .. –

+0

これを見てください:https://jsfiddle.net/cnycmLq0/4/私はそれを更新し、内容を修正しました。しかし、最後のタブを削除すると、その内容は表示されません。私を助けてくれますか? – Jacob

関連する問題