全幅と高さdiv
(それぞれdiv
が事実上ページです) を持つ Web サイトがあり、リンクとハッシュを使用してそれらをナビゲートします。のページ (全高)に<a href="#work"></a>
スクロールします。div
id
work
私が今やろうとしているのは、ナビゲーションにもキープレスを使用することです。これにより、上下の矢印を押すだけで各ページを簡単にナビゲートできます。
これにはswitchステートメントを使用できると思いましたか?私が問題を抱えているのは、それを動的にすることです。私が考えた方法はwindow.location
、キーが押されるたびに新しいハッシュを使用して最後に追加することでした。したがって、対応するid
.
ステートメントを使用if
すると、このようなことができます..
var hash = window.location.hash.substring(1), // get hash for current page
url = window.location.pathname; // get url
if (hash == 'home' && e.keyCode == 40) {
window.location = url+'#about' // update location with new hash
}
しかし、switch ステートメントを使用してそれを行う方法が思いつきません。手動で設定するのではなく、次のハッシュをチェックする方法が必要です。私はいくつかのグーグルを行い、これを使用して次のようnextAll
に見つけることができると考えました..attr
div
var hash = $('.what').nextAll('div:first').attr('id').substring(5);
hash = '#'+hash;
これは機能しますが、明らかに最初のものを探しているだけで、div
毎回更新されるわけではありません.次のものを取得して、そのようなステートメントdiv
を使用するにはどうすればよいですか?switch
$(document).keydown(function(e) {
switch (e.which) {
case 37: window.location = url //url is equal to the next hash location
break;
case 38: window.location = url //url is equal to the previous hash location
break;
}
});
HTML
<div id="work_1" class="what scrollv">
<div class="wrap">
<h2>work 1</h2>
</div>
</div>
<div id="work_2" class="what scrollv">
<div class="wrap">
<h2>work 2</h2>
</div>
</div>
<div id="work_3" class="what scrollv">
<div class="wrap">
<h2>work 3</h2>
</div>
</div>
アイデアはありますか?if else ステートメントを長く使いたくないのです。