Navegação jQuery - método contents()
Exemplo
Encontra todos os nós de texto dentro do parágrafo e os envolve com a tag em negrito.
$("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");
Definição e uso
O método contents() obtém os nós filhos de cada elemento correspondente na coleção de elementos correspondentes, incluindo nós de texto e de comentário.
Sintaxe
.contents()
Explicação detalhada
Se fornecido um objeto jQuery que representa uma coleção de elementos DOM, o método .contents() nos permite recuperar os nós filhos diretos desses elementos no árvore DOM e construir um novo objeto jQuery com os elementos correspondentes. O .contents() e .children() O método é semelhante, mas a diferença é que o primeiro inclui nós de texto e elementos HTML no objeto jQuery de resultado.
O método .contents() também pode ser usado para obter o documento de conteúdo do iframe, desde que o iframe e a página principal estejam no mesmo domínio.
Pense na seguinte <div> com alguns nós de texto, cada nó sendo separado por dois elementos de quebra de linha (<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>
Podemos usar o método .contents() para transformar um bloco de texto em um parágrafo bem formatado:
$('.container').contents().filter(function() { return this.nodeType == 3; ) .wrap('<p></p>') .end() .filter('br') .remove();
Este código primeiro recebe o conteúdo de <div class="container">, então filtra seus nós de texto, encapsulando os nós de texto em etiquetas de parágrafo. Isso é implementado através do teste do atributo .nodeType do elemento. Este atributo contém um código numérico que indica o tipo de nó; os nós de texto usam o código 3. O conteúdo será filtrado novamente, desta vez para <br />, que serão removidos.