Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2015, 00:07
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Jquery. Как обернуть голый текст в span.
Добрый день.
Есть например html код
<div>
     сообщение <br>без тегов
    <p>Внутрений p</p>
   <span>Текст в спане</span>
    сообщение без тегов
</div>

Вообще дерево многоуровневое и большое.
Мне нужно обернуть все безтеговые элементы например в span.
по типу <span> сообщение <br>без тегов</span>.
Как это можно сделать попроще? .text() - берет весть текст элемента, с учетом вложений(не подходит).
Вариант тупого перебора у каждого элемента
div[0]['childNodes'][0].nodeName искать #text и сшивать потом в куски - мне кажется будет очень долгим.
Может есть метод попроще и побыстрее?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2015, 00:30
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Ладно вопрос закрыт
Вроде подошел метод
div.contents().filter(function() {
            return this.nodeType === 3 && $.trim(this.nodeValue) !== '';
        })
        .wrap('<span/>');
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2015, 00:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

vuler,
как же
Сообщение от vuler
<span> сообщение <br>без тегов</span>.
? или лишние span не помеха?
Ответить с цитированием
  #4 (permalink)  
Старый 23.11.2015, 01:02
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Вообще согласен, что лишнего много будет, но это Html редактор, итоговая страница будет без спанов. они просто удалятся.
Функция применро такая
function wrap_all_text(elem){
	elem.children().each(function(){
		wrap_all_text($(this))
	})
	elem.contents().filter(function() {
            return this.nodeType === 3 && $.trim(this.nodeValue) !== '';
        })
        .wrap('<span>');
}

Единственное, что он пока спаном оборачивает и теги, где json данные хранятся, это сейчас буду править
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Toggle эффект блока с кнопкой "Читать дальше". С меня "+" subbziro Общие вопросы Javascript 10 28.12.2016 01:43
Как взять только текст а разметку оставить внутри элемента? Кирюха =) jQuery 3 17.05.2015 22:32
Изменяющийся блок clor Элементы интерфейса 9 22.08.2014 14:25
Сворачивание строк таблицы eFusion jQuery 6 13.05.2014 15:08
прогкрутка к якорям cOAPerator Общие вопросы Javascript 20 27.08.2013 03:30