Селектор jQuery для поиска первого элемента после заданного элемента, который соответствует селектору

Скажем, у меня есть этот HTML:

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

Как я могу выбрать DIV с классом "select_this", когда я уже определил текстовую область? Я не хочу использовать селектор классов для всего документа, потому что я работаю с большим документом, а поиск в классах медленнее в старых браузерах.

jQuery.next(), похоже, не делает трюк, ближайший() ищет только дерево DOM, а .nextUntil() подходит для всего, что мне нужно, кроме div_ select_this. Какие-либо другие варианты там?

Ответ 1

Есть два способа сделать это.

Используйте это, если у вас есть только несколько братьев и сестер:

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

Недостатком этого является то, что он проверяет каждый последующий элемент, чтобы убедиться, что он соответствует селектору, даже после того, как он нашел первый. Используйте это, если у вас есть много, много братьев и сестер, чтобы сэкономить на оценке:

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

Обратите также внимание на то, что лучше использовать методы first и last, а не их соответствующие селекторы (:first, :last), поскольку браузеры не понимают селекторов, что значительно замедляет экспрессию.

Отредактировано для включения andSelf для комментария ниже.

Ответ 2

Вы хотите nextAll:

jQuery(yourTextarea).nextAll('.select_this:first');