我从 getSelection 范围返回一个文本节点(node.nodeType == 3),例如:
var selectionRange = selection.getRangeAt(0);
var startContainer = selectionRange.startContainer;
这个 startContainer 通常是一个文本节点,例如下面的 html:
<p>Paragraph in <u>parag</u>raph.</p>
将产生带有文本“raph”的文本节点。如果 | 表示选择:
<p>Paragraph in <u>parag</u>r|aph|.</p>
没错,选中的文本是aph,文本节点是raph.,因为在raph之前,u节点内部有一个新的文本节点。
现在,在调用时,$(startContainer).prevAll().each(function(index, node) ...
我希望它返回 U(其中包含一个带有 parag 的文本节点)和另一个文本节点(其中包含 Paragraph in )。
但是,它只返回 U 而不是它左侧的文本节点。
为什么是这样?如何在我的 startContainer 之前获取所有同级节点,包括带有 jQuery 的文本节点?