Мой пример:Вставка подстроки с помощью индекса
<div contenteditable="true">
Hello <span class="tagname">Hermione</span> hello @
</div>
Когда я получаю текст DIV:
let text = $('[contenteditable=true]').text(); // 'Hello Hermione hello @'
Индекс @
характера: 21
.
Я хочу вставить больше тега span внутри div через индекс. Но как я могу это сделать, не теряя уже тегов?
Моя идея:
let $div = $('[contenteditable=true]'), text = $div.text(),
tagname = $('<span>').addClass('tagname').text('voldemort');
$div.html(text.substring(0, index))
.append(tagname)
.append(text.substring(index + 1, text.length));
Если я использую этот путь, уже все метки (s) будет отменено. Я потеряю их.
Кроме того, я не могу использовать:
$div.html($div.html().replace('@', tagname[0].innerHTML));
, поскольку содержание может содержать некоторый @
символ (ы), что я не хочу, чтобы заменить (должно быть по индексу).
Есть идеи по поводу этой проблемы?
Что вы хотите, чтобы ваш окончательный $ ДИВ выглядеть конкретно? – wlh
@wlh Моя цель: 'Hello Гермиона hello voldemort' –
Не могли бы вы использовать ваш последний пример (я предполагаю, что @ будет последним элементом в строка) со следующим регулярным выражением? '$ div.html ($ div.html(). Replace (/ @ $ /, tagname [0] .innerHTML));' – wlh