jQuery:从当前元素中查找prev元素

时间:2017-12-05 11:46:30

标签: javascript jquery

如何从当前元素获取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的结构每次都在变化。这就是我害怕的原因。

2 个答案:

答案 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)

&#13;
&#13;
 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;
&#13;
&#13;