Я хочу окружить кучу блочных тегов (p, div) собственным тегом span, основанным на выборе пользователя, и мне интересно, как это сделать?Я рассмотрел функции range.insertNode () и range.surroundNode (), но нет способа передать его нескольким узлам для окружения.
Моя текущая реализация выглядит следующим образом:
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var $startSpan = $("<span class=\"SelectSpan\"/>");
range.insertNode($startSpan[0]);
range.surroundContents($startSpan[0]);
Это работает, если выделение содержит только один узел (т. Е. Пользователь выбирает только часть абзаца), но прерывается, если выделение пользователя проходит через несколько P или Div (среди других тегов, я уверен).
В качестве примера рассмотрим следующую структуру DOM:
<div>
<p>Hello there Mary</p>
<p>Hello there Jake</p>
</div>
Я бы хотел закончить чем-то вроде следующего, если пользователь выбирает части из обоих абзацев (Предположим, пользователь выбирает "там Мэри Привет там"):
<div>
<p>Hello <span>there Mary</span></p>
<p><span>Hello there</span> Jake</p>
</div>