【发布时间】:2017-02-07 18:30:38
【问题描述】:
我想返回一个在 Dom 树的一部分中之前出现的类的对象,如果之前没有出现,那么我想被告知。
上一次出现的定义:在每个循环中,上一次出现的“21ld”来自 $(this) - 基本上是在您可以找到它的地方,当文本搜索整个“.window”类源代码向后查找来自 $ 的“21ld”时(这个)。
html(非常非常简化,实际结构非常混乱和不可预测):
<div class='window'>
<div class='093a'>
<div class='a9a3'>
<div class='21ld'></div>
</div>
<div class='99l1'>
<div class='uuu99l1'>
<div class='saved'></div>
</div>
</div>
</div>
<div class='i93d'>
<div class='ad9l3'>
<div class='ool1ld'></div>
</div>
</div>
<div class='j93d'>
<div class='aid9l3'>
<div class='okl1ld'></div>
</div>
</div>
<div class='a93d'>
<div class='9l3'>
<div class='21ld'></div>
</div>
</div>
<div class='rbl1'>
<div class='4l1'>
<div class='saved'></div>
</div>
</div>
<div class='r0l1'>
<div class='0adl1'>
<div class='0l1'>
<div class='21ld'></div>
</div>
</div
</div>
</div>
js:
$('.window').find('.21ld').each(function(index){
console.log($(this).fromHereFindPreviousOccurence('.saved'));
});
所以我期望输出:
1: undefined/false/whatever
2: jQuery Object of first saved class from my example
3: jQuery Object of second saved class from my example
如果有人可以在这里帮助我,我会很高兴吗? :)
【问题讨论】:
-
为什么要这样做?我认为这里的答案会非常复杂,并且每次查找类时可能都需要遍历整个 DOM
-
"previous" 写在你的 HTML 中并不意味着与 DOM 树中的 previous 相同。我不认为你能按照书面的方式做到这一点。但正如@Cruiser 所说,如果您告诉我们为什么要这样做,我们可能会帮助您制定更好的解决方案。
-
另一个函数保存 dom 中的元素,在这个函数中,我需要从源中每个循环中的元素向后退的最后一个“.saved”元素的数据值。
-
当我们说您为什么要这样做时,我们真正要问的是,您通过获取此信息试图解决的原始问题是什么。不仅仅是您的解决方案中调用它的上一步/函数。
-
我正在从对话线程中抓取单个元素 - 混乱的 html 结构是整个对话线程 - 我正在挑选某些部分并保存它们,然后通过添加类将它们标记为已保存。然后在更新这个线程时,我想知道每个周期中的 $(this) 是否发生在整个线程中的“.save”类之后,如果是这样,我想从找到的类实例中获取数据。
标签: javascript jquery html screen-scraping