假设我有这个HTML:
<textarea>blah</textarea>
<br>
<div class="select_this">hello!</div>
当我已经识别出textarea时,如何选择带有“select_this”类的DIV?我不想在整个文档上使用类选择器,因为我正在使用大型文档,并且在旧版浏览器中类查找速度很慢。
jQuery .next()似乎没有诀窍,nearest()只查找DOM树,而.nextUntil()限定了我需要的一切,除了“select_this”div。还有其他选择吗?
答案 0 :(得分:19)
有两种方法可以做到。
如果您只有几个兄弟姐妹,请使用此选项:
$('textarea').nextAll('div.select_this').first();
这样做的缺点是它会测试每个后续元素,看它是否与选择器匹配,即使它找到了第一个元素。如果您有许多兄弟姐妹,请使用此功能来保存评估:
$('textarea').nextUntil('div.select_this').andSelf().last().next();
另请注意,最好使用first
和last
方法,而不是相应的选择器(:first
,:last
),因为浏览器本身并不理解选择器,大大减慢了表达速度。
编辑以在下面的评论中加入andSelf
。
答案 1 :(得分:3)
您想要nextAll
:
jQuery(yourTextarea).nextAll('.select_this:first');