12

次の HTML があるとします。

 <textarea>blah</textarea>
 <br>
 <div class="select_this">hello!</div>

テキストエリアが既に識別されている場合、クラス「select_this」でDIVを選択するにはどうすればよいですか? 大きなドキュメントを扱っており、古いブラウザではクラスの検索が遅いため、ドキュメント全体でクラス セレクターを使用したくありません。

jQuery .next() はうまくいかないようで、closest() は DOM ツリーを検索するだけで、.nextUntil() は「select_this」div を除いて必要なものすべてに適合します。そこに他のオプションはありますか?

4

2 に答える 2

20

それには2つの方法があります。

兄弟が数人しかいない場合は、これを使用します。

$('textarea').nextAll('div.select_this').first();

これの欠点は、最初の要素が見つかった後でも、後続のすべての要素をテストして、セレクターと一致するかどうかを確認することです。非常に多くの兄弟がいる場合は、これを使用して評価を節約します。

$('textarea').nextUntil('div.select_this').andSelf().last().next();

また、対応するセレクター ( 、 )よりもfirstandメソッドを使用する方が良いことにも注意してください。ブラウザーはセレクターをネイティブに理解しないため、式が大幅に遅くなります。last:first:last

andSelf以下のコメントごとに組み込むように編集されました。

于 2012-05-22T17:57:31.943 に答える
3

あなたが欲しいnextAll

jQuery(yourTextarea).nextAll('.select_this:first');
于 2012-05-22T17:54:23.157 に答える