如何从当前元素获取prev元素像这样。
<p class='target'>Target</p>
<ol>
<li>start</li>
<ul>
<li class='start'>mid</li>
</ul>
</ol>
目前,我正处于 start 元素中。我想找到目标元素。
我尝试使用以下代码来执行此操作。
$('.start').prev('.target');
但它没有得到目标 DOM。
我该怎么办呢?任何建议。
更新::
我的情景有点复杂。
<p>
<ins>asdf</ins>
</p>
<div>div (great-grandparent)
<ul>
<li><del>(second ancestor - second grandparent)</del></li>
<ul>
<li>
<span>span</span>
</li>
</ul>
</ul>
</div>
假设我在 span ,我试图找到“DEL和INS” 我要做什么?
我尝试下面的那个。但它没有用。
$('span').closest('del');
$('span').closest('ins');
HTML的结构每次都在变化。这就是我害怕的原因。
答案 0 :(得分:3)
$('.start').closest('ol').prev('.target');
对于遍历元素,了解其层次结构非常重要。如果您阅读上述代码,您应该能够弄清楚它的工作原理。
它可以像这样分解:
.start
=&gt;的元素<li class='start'>mid</li>
ol
=&gt;相关的.start
类型的最近(遍历树)元素<ol>
.target
元素相关的类ol
的前一个元素,该元素是预期的元素=&gt; <p class='target'>Target</p>
希望有所帮助。
从jQuery
API了解closest。
答案 1 :(得分:3)
console.log($(".start").closest( "ol" ).prev().html())
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class='target'>Target</p>
<ol>
<li>start</li>
<ul>
<li class='start'>mid</li>
</ul>
</ol>
&#13;