クラスを持つ要素を選択して次の要素を取得する

ライブ検索があり、リスト要素に hover のクラスが与えられています。次に、下向き矢印を押してホバークラスの後に次のli要素を取得しようとしています。 code>クラスをその要素に追加します。ここに私が持っているものがあります:

    if(e.keyCode == 40){
        var current = results.find('li.hover');
        current.removeClass();
        current.parent().next('li').addClass('hover');
        return false;
    }

次の要素にクラスを追加するだけではありません。現在のクラスはうまくいきます。私が間違っていることを確認していない。感謝します!

0
結果の価値は何ですか?
追加された 著者 Ry-,
あなたはhtmlを投稿できますか?
追加された 著者 Rafay,
current.next( 'li')。addClass( 'hover');
追加された 著者 Rafay,
HTML構造を見てもらえますか?
追加された 著者 lonesomeday,

5 答え

e.keyCode ではなく、 e.which を使用します。 jQueryはプロパティを正規化します(IEは e.keyCode をサポートしません)。

if(e.which == 40){

あなたのセレクタに関しては、これを試してください:

results.find('li.hover').removeClass().next('li').addClass('hover')

.next() looks for the next sibling matching the selector, so there is no need to call .parent().

3
追加された
の情報を参考にしてくれてありがとうございます。
追加された 著者 mikelbring,

あなたはLI.hoverを探しています。その後、あなたは親(ULです)に行き、ULの後に次のLIを選択します。

これを変更する:

current.parent().next('li').addClass('hover');

に:

current.next('li').addClass('hover');
2
追加された

current.parent().next('li') is probably not doing what you want.

currentli タグのjQueryオブジェクトなので、その親は ul タグであると仮定します。その場合、 next( 'li')li タグの最初の兄弟を探しています決して見つけません。

ホバークラスを追加したい li がわからないので、あなたが望むことをするために何を推薦するか正確にはわかりません。

0
追加された

current.nextSiblingは、リスト内の次のli要素を参照する必要があります

0
追加された

あなたはそれをしたいだけではありません:

if(e.keyCode == 40){
    var current = results.find('li.hover');
    current.removeClass();
    current.next('li').addClass('hover');
    return false;
}

parent()なし

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript