CSS3を使用した別の提案があります(これは改善できることはわかっていますが、アイデアを提供するためにこれをすばやく実行しています)。
これは、コンテンツがすでにロードされていることを前提としています。AJAXを介してロードしている場合は、別の方法でロードします。
HTML
<nav>
<a href='#content1'>Content 1</a>
...
<a href='#content7'>Content 7</a>
</nav>
<article id='main-content-wrapper'>
<section id='content1'>content 1</section>
...
<section id='content7'>content 7</section>
</article>
CSS
#main-content-wrapper{
max-height: 30em; /* arbitrary for example only */
overflow:auto; /* scroll if over max-height */
}
#main-content-wrapper section:not(:first-child){ display:none; }
#main-content-wrapper section:target{ display:block; }
JavaScript(CSS3が必要ない場合:target-私はこれをテストしていません)
var id = location.hash.replace('#','');
if( id.length > 0 ){
var sections = document.getElementById('main-content-wrapper').getElementsByTagName('section');
for( var i = sections.length-1; i >= 0; i-- ){
sections[i].style.display = 'none';
}
document.getElementById(id).style.display = 'block';
}
JQueryバージョン
if( location.hash.length > 0 ){
$('#main-content-wrapper content').hide();
$(location.hash).show();
}