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 のみが返され、その左側のテキスト ノードは返されません。
どうしてこれなの?jQuery を使用したテキスト ノードを含め、startContainer の前にすべての同じレベルのノードを取得するにはどうすればよいですか?