12

假设我有这个 HTML:

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

当我已经识别了 textarea 时,如何选择具有“select_this”类的 DIV?我不想在整个文档上使用类选择器,因为我正在处理大型文档,并且在旧浏览器中类查找速度很慢。

jQuery .next() 似乎没有解决问题,closest() 只查找 DOM 树,而 .nextUntil() 符合我需要的所有内容,除了“select_this”div。还有其他选择吗?

4

2 回答 2

20

有两种方法可以做到这一点。

如果您只有几个兄弟姐妹,请使用此选项:

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

这样做的缺点是它会测试每个后续元素以查看它是否与选择器匹配,即使在找到第一个元素之后也是如此。如果您有很多兄弟姐妹,请使用它以节省评估:

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

另请注意,最好使用firstandlast方法,而不是它们对应的选择器 ( :first, :last),因为浏览器本身并不理解选择器,这会大大降低表达式的速度。

编辑以合并andSelf下面的每条评论。

于 2012-05-22T17:57:31.943 回答
3

你想要nextAll

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