У меня есть текстовая область, где пользователь может редактировать некоторый текст, и он принимает HTML.В систему мы можем добавить мультимедийный файл для добавления в текстовую область.Но когда кто-то отменяет связь с мультимедиа, мне нужно проверить, есть ли какая-либо из них в текстовой области, удалить ее и вернуть обратно в текстовую область.
Итак: я получил текстовую область, такую как
<textarea id="edNew-body" class="apply-jHtmlArea" style="width:550px;height:250px;"></textarea>`
Когда я добавляю некоторые мультимедиа, это происходит, например, так:
<audio src="whatever url" controls="controls" class="multimedia_666007" style="display: block; margin: 5px auto 10px; width: 320px; height: 35px; background-color: rgb(227, 227, 227);">-AUDIO-No support for HTML5</audio>`
Итак, когда я удаляю мультимедиа, мне нужно получить все html внутри текстовой области и удалить все элементы с class=multimedia_NNNNN
, гдеNNNN будет числом.
Я попробовал следующее: Сделал JSFiddle с кодом ниже
dataId = '666007'; //not fixed, will come from somewhere from system
var $currentHtml = $($("#edNew-body.apply-jHtmlArea").val());
$currentHtml.find('.multimedia_'+dataId).remove(); //get all but ignore elements with this class
$("#edNew-body.apply-jHtmlArea").val($currentHtml.html()); //put Html back without elements
Я попробовал ответить на эти вопросы ниже, но они толькоработать над этими вопросами.Когда я пытаюсь адаптироваться, я всегда заканчиваю [object Object] или просто первым текстом «что-то» без html.
JQuery, удаляем элемент из строки
Строка в объект jQuery, как удалить элементы
Удалить элемент из строки html в JQuery
Чтение ответов, которые я узнал, что мне нужноиспользуйте find, потому что, поскольку это пользовательский ввод, он может быть или не вложен во что-то (поэтому я не могу использовать remove('.classhere')
)