J'ai du HTML simple dont j'ai besoin pour supprimer le formatage simple.
A nice house was found in <b>Toronto</b>.
Je dois supprimer le gras, mais laissez la phrase intacte.
Comment est-ce possible dans jQuery?
$('b').contents().unwrap();
Ceci sélectionne tous les <b>
éléments, puis utilise.contents()
pour cibler le contenu textuel de <b>
, puis.unwrap()
pour supprimer son <b>
élément parent .
Pour des performances optimales, utilisez toujours le mode natif:
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 ] );
}
Ce sera beaucoup plus rapide que n'importe quelle solution jQuery fournie ici.
unwrap()
et je ne me souvenais pas comment obtenir la partie de texte, j'ai oublié.contents()
- excellent..replacewith()
la traversée supplémentaire du DOM ... si c'est une<b>
balise avec uniquement du HTML, cela devient encore plus rapide.parent.normalize()
aprèsparent.removeChild(...
pour fusionner les nœuds de texte adjacents. Cela a été utile si vous modifiez continuellement la page.Vous pouvez également utiliser
.replaceWith()
, comme ceci:Ou si vous savez que ce n'est qu'une chaîne:
Cela peut faire une grande différence si vous déballez beaucoup d'éléments, car l'une ou l'autre des approches ci-dessus est beaucoup plus rapide que le coût de
.unwrap()
.la source
Le moyen le plus simple de supprimer les éléments HTML internes et de ne renvoyer que du texte serait la fonction JQuery .text () .
Exemple:
Démo jsFiddle
la source
Que dis-tu de ça?
La première ligne copie le contenu HTML de la
b
balise à l'emplacement directement après lab
balise, puis la deuxième ligne supprime lab
balise du DOM, ne laissant que son contenu copié.J'emballe normalement ceci dans une fonction pour le rendre plus facile à utiliser:
Tout le code est en fait pur Javascript, le seul JQuery utilisé est celui de sélectionner l'élément à cibler (la
b
balise dans le premier exemple). La fonction est juste du pur JS: DRegardez aussi:
la source
la source
Une autre solution native (dans le café):
Je ne sais pas si c'est plus rapide que la solution de user113716, mais cela pourrait être plus facile à comprendre pour certains.
la source
La réponse la plus simple est époustouflante:
externalHTML est pris en charge jusqu'à Internet Explorer 4!
Voici pour le faire avec javascript même sans jQuery
Cela devrait fonctionner dans tous les principaux navigateurs, y compris l'ancien IE. dans un navigateur récent, nous pouvons même appeler forEach à droite sur la liste de nœuds.
la source