jQuery итерация - метод contents()

Пример

Найти все текстовые узлы в абзацах и обернуть их жирным тегом.

$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");

Попробуйте сами

Определение и использование

Метод contents() получает подузлы каждого элемента из набора соответствующих элементов, включая текстовые и комментарии.

Синтаксис

.contents()

Подробное описание

Если задан jQuery объект, представляющий набор элементов DOM, метод .contents() позволяет нам получить прямые потомки этих элементов в дереве DOM и создать новый jQuery объект, используя соответствующие элементы. Метод .contents() и .children() Методы аналогичны, но в первом случае результат jQuery объекта включает текстовые узлы и HTML элементы.

Метод .contents() также можно использовать для получения содержимого документа iframe, при условии, что этот iframe находится в одной домене с главной страницей.

Подумайте о следующем <div>, который содержит несколько текстовых узлов, разделенных двумя символами分行ки (<br>):

<div class="container">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed 
  do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
  <br /><br />
  Ut enim ad minim veniam, quis nostrud exercitation ullamco 
  laboris nisi ut aliquip ex ea commodo consequat.
  <br /> <br />
  Duis aute irure dolor in reprehenderit in voluptate velit 
  esse cillum dolore eu fugiat nulla pariatur.
</div>

Мы можем использовать метод .contents(), чтобы преобразовать блок текста в хорошо структурированные абзацы:

$('.container').contents().filter(function() {
  return this.nodeType == 3;
)
  .wrap('<p></p>')
.end()
.filter('br')
  .remove();

Попробуйте сами

Этот код сначала принимает содержимое <div class="container">, затем фильтрует его текстовые узлы и封装 их в теги абзацев. Это реализуется через тестирование свойств .nodeType элементов; это свойство содержит числовой код, указывающий на тип узла; текстовые узлы используют код 3. Содержимое будет фильтроваться снова, на этот раз для элементов <br />, которые будут удалены.