2011-01-01 20 views
2

ねえ、 おそらくシンプルな質問、しかし、何もオンラインで見つけることができませんでした。jquery keypressは各ループを繰り返し実行しますか?

私は検索結果のリストを持っています。私は自分の上下のキーでリストをナビゲートすることができます。

if (e.keyCode == 40) { //down 
     //alert('down'); 
     $('#searchresults ul li').each(function() { 

     }); 
    } 

    if (e.keyCode == 38) { //up 
     //alert('up'); 
    } 

    if (e.keyCode == 13) { //enter 
     //alert('enter'); 
    } 

にsearchResultsは、次のようになります。

<ul> 
    <li class="matched"><a href="link1">link1</a></li> 
    <li class="matched"><a href="link2">link2</a></li> 
    <li class="matched"><a href="link3">link3</a></li> 
</ul> 

だから基本的に私はちょうど上下キーで私にsearchResultsをナビゲートすることができるようにしたいです。現在の要素の選択は、単に背景色を変更する必要があります。私がEnterを押すと、リンクされて一致した要素が発生します。

どのように私は検索結果を反復処理することができますか? はあなたに

編集感謝:私は、インデックスメソッドと間違って何かをやっているので、

var pressedCount = 0; 

if (e.keyCode == 40) { //down 
    console.log(pressedCount); 
    $('#searchresults ul li').index(pressedCount).addClass('selected'); 
    pressedCount++; 
} 

は、動作しません。しかし、pressedCount varはすべてのarrowkeydownトリガーで増分します。

+0

ちょっと指摘しておきたいのは、簡単な質問はなく、何かを理解しているかどうかだけです。このサイトは2番目のケースの状態です。 :) – Mantar

答えて

6

の作業のデモ:http://jsfiddle.net/zBjrS/1/

(あなたはIFRAMEを集中させるためには、最初のページをクリックする必要があります。)

+0

それは美しいです! – house9

1

多くのキーボード(ノートブック)にページの上/下が表示されていない世界に住んでいるときに、ユーザーの矢印キーを引き継ぐというのが本当に好きなのはわかりません。スクロールには矢印を使用するユーザーがたくさんいます。

結果にキーボードナビゲーションを設定した場合、最初のリンクにフォーカスを置くだけでタブが下がり、Shift +タブが上がります。この機能は、すでにあなたの中に内蔵されているすべての

はちょうどこのよう

$('first_element_selector').focus();

0

何かがあなたがプリロードする必要があるだろう

if (e.keyCode == 40) { //down 
    $('#searchresults ul li').each(function() { 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
      $(this).next().addClass('selected'); 
      // use $(this).prev() for UP case 
     } 
    }); 
} 

ノートを動作するはずです最初の要素にフォーカスを設定する必要があります'selected' cssクラスを持つリスト、または選択されていない場合はリスト内の最初の項目に適用するコードを追加する

また、あなたがリストの最後の項目であるかどうかを確認するためのコードが必要になります、あなたは

jQueryの次のこのケースでは().next呼び出したいではないでしょう http://api.jquery.com/next/

jQueryの前 http://api.jquery.com/prev/

jQueryのhasClass http://api.jquery.com/hasClass/

jQueryのremoveClass http://api.jquery.com/removeClass/

+0

ありがとう、私のアプローチについてはどうですか?私は自分の投稿を編集しました。 – matt

+0

参照ŠimeVidasの例のリンク – house9

関連する問題