0

矢印キー機能を備えたカスタムドロップダウンメニューを作成しており、:contains.

次のコードを通過できないようです。何が起こっているかというと、現在ホバリングされている li で選択を開始し、 class を持つ次または前の li に進む必要があるということmatchです。

私の次のコードは正しく開始されますが、クラスを持たない ( ) または (非表示).next('.match')の 's を渡しません。<li>match

next()関数は非表示の要素で壊れますか?

Jquery コード

 $('.dropdown_shell.opened li.match.hovered')
     .next('.match')
     .addClass('hovered')
     .siblings()
     .removeClass('hovered');

HTML

<ul class="scroll">
     <li class="selected default match">None</li>
     <li class="" style="display: none;">For Sale</li>
     <li class="match">For Rent</li>
     <li class="" style="display: none;">For Lease</li>
     <li class="match hovered">Sale or Lease</li>
     <li class="match">New Listing</li>
     <li class="match">Open House</li>
</ul>
4

1 に答える 1

2

あなたのnext()機能は、あなたが思っていることをしていません。次の要素を見て、指定されたセレクターを作成する場合にのみ一致します。それ以外の場合は、空の jQuery オブジェクトを返します。

代わりに、nextAll()将来のすべての兄弟を調べてから、first()メソッド (または:first) セレクターを使用して最初のものに一致させます。

ここでこれが機能していることを確認できます。http://jsfiddle.net/DH3hG/

next()が非表示の要素を考慮するかどうかについての質問に答えるには; はい、そうです。DOM に挿入されるものはすべて考慮されます。

于 2013-08-24T15:26:20.480 に答える