注意したいのは再描画です。要素を追加または削除する場合、ブラウザは、変更がページ上の他のすべての要素にどのように影響するかを把握し、それに応じてすべての要素を再配置/サイズ変更する必要があります。このプロセスは、ほとんどの場合、DOM操作の中で最もコストのかかる部分です。確かに、どの要素がどのタブに入るのかを把握するよりもコストがかかります。
ブラウザは再描画を最適化しようとします。ブラウザはページをできるだけ少なく再描画し、複数の変更を同じ再描画にグループ化する場合があります。ただし、問題は自分の手に委ねることが最善です。追加または削除するノードの数に関係なく、最初にDOMから親ノードを削除し、次にすべての変更を加えてから再追加することにより、再描画が2つ以下であることを確認できます。簡単な例を次に示します。
var container = document.getElementById('container'),
    buffer = document.createDocumentFragment(),
    newNodes = tabs[selection], // an array or object, generated at page load,
                                // containing all divs that show up in this tab
    i, div;
document.body.removeChild(container);
for (i = 0; div = newNodes[i]; i++) {
    buffer.appendChild(div); // if div is in container then it will be
                             // automatically removed
}
container.innerHTML = ''; // probably more efficient to remove nodes individually
container.appendChild(buffer);
document.body.appendChild(container);
レイアウトによっては、削除containerするとその下のコンテンツが一時的にジャンプする場合があります。洗練された外観が必要な場合は、containerの親の高さを固定するか、その場所に。を使用してプレースホルダーを挿入できcontainer.parentNode.replaceNode()ます。
再描画を最小限に抑えれば、効率の問題は発生しないはずです。ただし、それでも微調整が必要な場合は、コンテンツ挿入ロジックを最適化してください。これを行う最も簡単な方法は、おそらく、コンテンツタイプごとに異なるコンテナを使用して、単一のタブに関連付けられているコンテンツを複数のタブに表示されるコンテンツから分離することです。最善の解決策は、必要以上に一般化されていないものであることを忘れないでください。