Есть несколько способов попробовать это.Предпочтительный вариант (поскольку вы уже используете jQuery), вероятно, использует contents () :
$('.your_cms_container').contents().filter(function() {
return this.nodeType == 3; // Only text nodes
}).wrap('<p></p>')
. Это обернет все текстовые узлы в теги абзаца.После этого извлекаем все теги
:
$('.your_cms_container').filter('br').remove();
Конечно, все становится сложнее, если ваши текстовые узлы не являются простыми дочерними элементами основного текстового контейнера.
Другой (грязный) вариант - просто манипулировать html вручную, а затем вернуть его обратно в jQuery, как только вы закончите:
var htmlAsString = $('.your_cms_container').html(); // Get the contents as simple text
... // Do nasty things to the string here
$('.your_cms_container').html(htmlAsString); // Put it back and let jQuery try and sort out any mess
Я не говорю, что второй путь неверен, а иногдаЕдинственный способ добиться цели, не переписывая все.Но это все равно заставляет меня чувствовать себя грязным, если я должен это делать; -)