如何使用 JavaScript/jQuery 找到两个元素节点之间的所有文本节点?
给定以下 HTML 片段:
<div>
<p>
abc <span id="x">[</span> def <br /> ghi
</p>
<p>
<strong> jkl <span id="y">]</span> mno </strong>
</p>
</div>
我需要一种算法来使用 Javascript 获取 #x
和 #y
之间文本类型的所有节点。或者有一个 JQuery 函数可以做到这一点吗?
对于上面的示例,生成的文本节点(忽略空白节点)将是:
['def', 'ghi', 'jkl']
Given the following HTML-Fragment:
<div>
<p>
abc <span id="x">[</span> def <br /> ghi
</p>
<p>
<strong> jkl <span id="y">]</span> mno </strong>
</p>
</div>
I need an algorithm to fetch all nodes of type Text between #x
and #y
with Javascript. Or is there a JQuery function that does exactly that?
The resulting Text nodes (whitespace nodes ignored) for the example above would then be:
['def', 'ghi', 'jkl']
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下内容适用于使用 DOM 方法且不使用库的所有主要浏览器。正如问题中提到的,它还会忽略空白文本节点。
必需的jsfiddle: http://jsfiddle.net/timdown/a2Fm6/
The following works in all major browsers using DOM methods and no library. It also ignores whitespace text nodes as mentioned in the question.
Obligatory jsfiddle: http://jsfiddle.net/timdown/a2Fm6/
以下示例使用 jQuery 查找任意两个彼此相邻的元素,并且它们之间可能有也可能没有文本节点。此 foreach 循环将检查结果元素以查找任何文本节点并将它们添加到列表中。
The following example uses jQuery to find any two elements that are next to each other and may or may not have text nodes between them. This foreach loop will check the resulted elements to find any text nodes and add them to the list.