Javascript jQuery:从当前元素中查找prev元素
如何像这样从当前元素中获取prev元素Javascript jQuery:从当前元素中查找prev元素,javascript,jquery,Javascript,Jquery,如何像这样从当前元素中获取prev元素 <p class='target'>Target</p> <ol> <li>start</li> <ul> <li class='start'>mid</li> </ul> </ol> 但是它没有得到目标 我该怎么做?有什么建议吗 更新:: 我的情况有点复杂 <p> <ins>asd
<p class='target'>Target</p>
<ol>
<li>start</li>
<ul>
<li class='start'>mid</li>
</ul>
</ol>
但是它没有得到目标
我该怎么做?有什么建议吗
更新::
我的情况有点复杂
<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>
HTML的结构每次都在变化,这就是我害怕的原因
$('.start').closest('ol').prev('.target');
对于遍历元素,理解它们的层次结构很重要。如果您阅读了上面的代码,您应该能够理解它工作的原因
可以这样分解:
- 选择class
=>.start
- mid
- 获取与
=>相关的
类型的最近(向上遍历树)元素。startol
- 使用类
获取与先前选择的.target
元素相关的上一个元素,该元素是预期的元素=>ol
目标
jQuery
API
对于遍历元素,理解它们的层次结构很重要。如果您阅读了上面的代码,您应该能够理解它工作的原因
可以这样分解:
- 选择class
=>.start
- mid
- 获取与
=>相关的
类型的最近(向上遍历树)元素。startol
- 使用类
获取与先前选择的.target
元素相关的上一个元素,该元素是预期的元素=>ol
目标
jQuery
API.
console.log($(.start”).closest(“ol”).prev().html())
目标
开始
- 中
console.log($(.start”).closest(“ol”).prev().html())
目标
开始
- 中
$('.start')。最近('ol')。上一个('.target')代码>作为.target
不是直接同级,因此您的代码无法工作。您可以使用.closest()
遍历到ol
,然后使用.prev()
@FedericoklezCulloca谢谢Federico,我想我被开始文本弄糊涂了;)您的标记无效。不能将
嵌套为
或
的子项,这仅供参考。别担心。你说的“别担心”是什么意思?当你的代码不真实或无效时,人们如何帮助你?参见$('.start')。最近('ol')。上一个('.target')代码>作为.target
不是直接同级,因此您的代码无法工作。您可以使用.closest()
遍历到ol
,然后使用.prev()
@FedericoklezCulloca谢谢Federico,我想我被开始文本弄糊涂了;)您的标记无效。不能将
嵌套为
或
的子项,这仅供参考。别担心。你说的“别担心”是什么意思?当你的代码不真实或无效时,人们如何帮助你?看看如果我试图找到最接近的ins、del和span元素会怎么样。@MariSelvan我建议您先更正/格式化更新后的html。很难分辨出哪个是节点,哪个是值/文本。谢谢。现在我把它做好了(i thing)。@MariSelvan如果你看一下示例html,没有结束div,所以它仍然是无效的html。对于元素遍历,了解层次结构很重要。此外,如果html不断更改,脚本将不断中断。好的,我将关闭div。但是,我的问题是html每次都在更改。这就是为什么我需要像您这样的专业人士的帮助。如果我尝试查找最近的ins、del和span元素,该怎么办。@MariSelvan我建议您首先更正/格式化更新后的html。很难分辨出哪个是节点,哪个是值/文本。谢谢。现在我把它做好了(i thing)。@MariSelvan如果你看一下示例html,没有结束div,所以它仍然是无效的html。对于元素遍历,了解层次结构很重要。此外,如果你的html不断变化,你的脚本将不断中断。好的,我将关闭div。但是,我的问题是html每次都在变化。这就是为什么我需要像你这样的专业人士的帮助。
$('span').closest('del');
$('span').closest('ins');
$('.start').closest('ol').prev('.target');