0

特定の開始オフセットと長さに基づいて、子要素を別の要素に追加しようとしています。例:

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p>

6 文字の開始オフセットと 20 文字の長さを指定して、親要素 (p) をスパン要素で内部ラップしたいと考えています。

<p>Lorem <span>ipsum dolor sit amet</span>,
consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt
ut laoreet dolore magna aliquam erat volutpat.

何か案は?

4

1 に答える 1

2

http://jsfiddle.net/VNY2k/を使用して分割できるテキストノードがありsplitTextます。

テキスト ノードnodeと分割インデックスがある場合n、はそのインデックスまでの のテキストのみを含むように変更しnode.splitText(n)残り のテキストを含む新しいテキスト ノードを返します。nodenode

var node1 = ​$("p").contents()[0];  // whole text node
var node2 = node1.splitText(6);    // right of splitting point #1
var node3 = node2.splitText(20);   // right of splitting point #2
$(node2).wrap("<span>");           // node2 will contain the text
                                   // you want to wrap: right of #1
                                   // and left of #2

テキスト ノード自体を編集して を含めることはできないことに注意してください<span>。テキスト ノードには実際にはテキストのみが含まれ、要素 (例: <span>) はそれ自体がノードです。そのため、テキスト ノードを分割する必要があります。

于 2012-07-16T14:53:47.257 に答える