我从页面复制了一些文本节点(即实时DOM)并将它们存储在一个数组中。是否有可能在实时DOM中再次找到那些确切的节点?我需要使用纯JavaScript。
这基本上是我的项目的工作方式:
select
和exclude
。 select
选择器生成一个元素集合,然后克隆它。exclude
集合运行select
选择器,查找匹配的所有元素,并将其从select
集合中删除。select
集合与已删除的exclude
部分一起使用,我遍历它以构建仅包含文本节点的数组。data
中该术语出现的位置/偏移量。鉴于后一个数组,我需要能够将找到匹配项的克隆文本节点与克隆它们的原始文本节点进行匹配。如果我可以这样做,我可以迭代我的对象数组,首先找到对应于实时DOM(最初克隆它)的文本节点,然后在我记录的位置/偏移处链接该术语在对象中。
希望这是有道理的 - 如果没有,请告诉我,我可以提供更多细节。这必须是确定性的 - 即,我不能只在实时DOM中搜索具有相同data
的文本节点,因为这可能会导致误报。
同样,我必须在这里使用纯JavaScript,而不是jQuery或任何其他库。
我感谢任何帮助!
答案 0 :(得分:2)
一般情况下,你不能。克隆后,新克隆与旧节点具有不同的标识。没有通用的方法将节点绑定回克隆的节点。
如果您知道最顶层的克隆祖先节点以及文档中从中克隆的节点,您可以自然地使用其父子节点列表中每个祖先的索引从最顶层的祖先向下走到特定节点。 ..但只是假设自克隆以来DOM都没有变异。
否则,你会留下一些可怕的黑客攻击,比如克隆后立即遍历克隆的整个DOM,将expando属性写入每个节点以引用源节点。
我不确定你为什么要克隆节点。在您描述的过程中,您肯定可以将实时文档节点存储在列表中,而无需进行任何克隆吗?