Tom*_*Tom 4 html javascript jquery selection siblings
我从getSelection范围返回一个文本节点(node.nodeType == 3),例如:
var selectionRange = selection.getRangeAt(0);
var startContainer = selectionRange.startContainer;
Run Code Online (Sandbox Code Playgroud)
这个startContainer通常是一个文本节点,例如以下html:
<p>Paragraph in <u>parag</u>raph.</p>
Run Code Online (Sandbox Code Playgroud)
将导致文本节点的文本为"raph".如果| 表示选择:
<p>Paragraph in <u>parag</u>r|aph|.</p>
Run Code Online (Sandbox Code Playgroud)
没错,选中的文本是aph,文本节点是raph.因为在raph之前u节点内有一个新的文本节点.
现在,在调用时$(startContainer).prevAll().each(function(index, node) ...
我希望它返回U(包含带有parag的文本节点)和另一个文本节点(包含Paragraph in).
但是,它仅返回U而不返回其左侧的文本节点.
为什么是这样?如何在startContainer之前获取所有相同级别的节点,包括使用jQuery的文本节点?
感谢Pointy,我接受了他的回答,我想出了以下内容:
var left = true;
var leftNodes = [];
var rightNodes = [];
$(startContainer).parent().contents().each(function(index, node) {
if (!left) { //right
rightNodes.push(node);
}
else if ((node.isSameNode(startContainer)) && (left)) {
left = false;
}
else { //left
leftNodes.push(node);
}
});
Run Code Online (Sandbox Code Playgroud)