Eu tenho algum HTML simples que eu preciso remover a formatação simples.
A nice house was found in <b>Toronto</b>.
Preciso remover o negrito, mas deixar a frase intacta.
Como isso é possível no jQuery?
$('b').contents().unwrap();
Isso seleciona todos os <b>
elementos e, em seguida, usa.contents()
para direcionar o conteúdo de texto do e <b>
, em seguida.unwrap()
, para remover seu <b>
elemento pai .
Para obter o melhor desempenho, sempre vá nativo:
var b = document.getElementsByTagName('b');
while(b.length) {
var parent = b[ 0 ].parentNode;
while( b[ 0 ].firstChild ) {
parent.insertBefore( b[ 0 ].firstChild, b[ 0 ] );
}
parent.removeChild( b[ 0 ] );
}
Isso será muito mais rápido do que qualquer solução jQuery fornecida aqui.
unwrap()
e não conseguia me lembrar de como obter a parte do texto, esqueci.contents()
- excelente..replacewith()
a passagem extra do DOM ... se for uma<b>
tag apenas com HTML, fica ainda mais rápido.parent.normalize()
depoisparent.removeChild(...
para mesclar nós de texto adjacentes. Isso foi útil se você estiver modificando continuamente a página.Você também pode usar
.replaceWith()
, assim:Ou se você sabe que é apenas uma string:
Isso pode fazer uma grande diferença se você estiver desembrulhando muitos elementos, pois qualquer uma das abordagens acima é significativamente mais rápida que o custo
.unwrap()
.fonte
A maneira mais simples de remover elementos html internos e retornar apenas texto seria a função JQuery .text () .
Exemplo:
jsFiddle Demo
fonte
Que tal agora?
A primeira linha copia o conteúdo HTML da
b
marca para o local diretamente após ab
marca e, em seguida, a segunda linha remove ob
marca do DOM, deixando apenas seu conteúdo copiado.Normalmente, envolvo isso em uma função para facilitar o uso:
Todo o código é realmente Javascript puro, o único JQuery usado é o de selecionar o elemento a ser segmentado (o
b
tag no primeiro exemplo). A função é apenas JS: DVeja também:
fonte
fonte
Outra solução nativa (no café):
Não sei se é mais rápido que a solução do user113716, mas pode ser mais fácil entender para alguns.
fonte
A resposta mais simples é alucinante:
O outerHTML é suportado no Internet Explorer 4!
Aqui está para fazê-lo com javascript, mesmo sem jQuery
Isso deve funcionar em todos os principais navegadores, incluindo o IE antigo. no navegador recente, podemos até chamar cada um diretamente no nodelist.
fonte