3

キーボード ナビゲーションを Menu(ul li based ) に追加しようとしています。キーダウン イベントをメニューにバインドしました (または、キーダウンをドキュメントにバインドする必要がありますか?)

使用されるハンドラ関数を以下に示します

 KeyDown: function(e) {        

    var toFocus = false;


                  if (e.keyCode == 38) {
         toFocus = $((e.target/* li */).next()[0]);
      }
                          if (e.keyCode == 40) {
         toFocus = $((e.target).next()[1]);
      }
    if (toFocus) {
        $(e.target).attr('tabIndex', '-1');
        $(toFocus).attr('tabIndex', '0');
        toFocus.focus();
        return false;
        }
        }

ここで、e.targetを li ではなく html として取得しますか?

キーボード ナビゲーションを追加する他の方法を提案できますか?

4

3 に答える 3

1

カスタム属性を使用して、上下のタブIDを保持してみてください。

...KeyDown: function(e) {
    var Direction;
    if (e.keyCode == 38)
         Direction = "toUp";
    else Direction = "toDown";

    var Focus = $("li[tabid=\""$(e.target.id).attr(Direction)"\"]");
    Focus.focus();
}

---

<li ... tabid="1" toUp="-1" toDown= "2" />
<li ... tabid="2" toUp= "1" toDown= "3" />
<li ... tabid="3" toUp= "2" toDown= "4" />
<li ... tabid="4" toUp= "3" toDown="-1" />

上記のコードはアイデアを示すためのものであり、今では遅く、テストする時間がありませんでした。ですから、私が働いていないという理由で私を投票しないでください。

お役に立てば幸い

于 2009-09-11T06:19:40.737 に答える
1

自分でこれを行う代わりに、既存のプラグインを使用してみませんか?

jQuery キーボード ナビゲーション

デモページはこちら

私のデモ:例のデモページを追加するだけです

于 2009-09-11T06:06:50.263 に答える