когда я только начинал вникать в фронт-енд, у меня возникла похожая ситуация. 4 года назад я выбрал такой подход:
<div id="headline1" style="display:none">
мой текст 1
</div>
<div id="headline2" style="display:none">
мой текст 2
</div>
<div id="headline3" style="display:none">
мой текст 3
</div>
...
<div id="box"><div>
...
<a href="#" onclick="setHeadline(); return false;">кнопка 1</a>
<a href="#" onclick="setHeadline(2); return false;">кнопка 2</a>
<a href="#" onclick="setHeadline(3); return false;">кнопка 3</a>
function setHeadline(num){
num = num || 1;
$("#box").html($('#headline'+num).html());
}
на оптимальность не претендую, ибо чисто концепт.