使用jQuery选择器,如何div在另一个特定元素之后立即查找元素?(不是兄弟姐妹,next()在这种情况下无法帮助)
假设我有这个HTML:
<textarea>blah</textarea>
<br>
<div class="select_this">hello!</div>
Run Code Online (Sandbox Code Playgroud)
当我已经识别出textarea时,如何选择带有"select_this"类的DIV?我不想在整个文档上使用类选择器,因为我正在使用大型文档,并且在旧版浏览器中类查找速度很慢.
jQuery .next()似乎没有做到这一点,nearest()只查找DOM树,而.nextUntil()限定了我需要的一切,除了"select_this"div.还有其他选择吗?
有没有办法检测元素是否出现在标记中的另一个元素之前或之后?这与DOM中的位置无关.它可以是孩子,兄弟姐妹,父母或父母的父母.这是一个普遍的问题,所以没有标记要分享.
澄清 - 这是关于元素在标记中的位置,而不是它的显示位置.现在我想到了我的问题有点奇怪,因为如果你有元素X和元素Y那么你可以有这些场景.
//in regards to y
<x />
<y /> //:after
<y /> //:before
<x />
<x><y /></x> //not really before or after is it?
Run Code Online (Sandbox Code Playgroud) <li>
<select id="foo"></select>
</li>
<li>
<select id="bar"></select>
</li>
<li>
<select id="baz"></select>
</li>
var select_after = function(src){
//How get all select elements after the one specified as argument ?
}
Run Code Online (Sandbox Code Playgroud)
怎么写这个方法?
select_after($("#foo"))
Run Code Online (Sandbox Code Playgroud)
应返回数组中的#bar和#baz元素
select_after($("#bar"))
Run Code Online (Sandbox Code Playgroud)
应该在数组中返回#baz元素
select_after($("#baz"))
Run Code Online (Sandbox Code Playgroud)
应该返回空数组
我应该怎么写这个方法?
我在代码中找到了它,并且不知道使用*.class选择器选择器有什么意义.class.
在 javascript 中可能更好,但这肯定可以包括 jQuery 或任何此类库。
我想.next在下面的例子中找到第一个。
有很多类似问题的答案暗示nextAll或siblings......两者在这里都没用:
$(function(){
$('.result').text(
$('.origin').nextAll('.next').text()
|| $('.origin').siblings('.next').text()
|| 'both failed'
)
})Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="whatever">
<p class="result"></p>
<p class="origin">1</p>
</div>
<p class="next">2</p>
<p class="next">3</p>Run Code Online (Sandbox Code Playgroud)
此外,什么是最兼容(浏览器和库明智)和最高效(速度和更少的代码行)的方式来做到这一点?