J'ai le code suivant
<b class="xyzxterms" style="cursor: default; ">bryant keil bio</b>
Comment remplacer la b
balise par une h1
balise tout en conservant tous les autres attributs et informations?
javascript
jquery
bammab
la source
la source
Réponses:
Voici une façon de le faire avec jQuery:
Exemple: http://jsfiddle.net/yapHk/
Mise à jour , voici un plugin:
Exemple: http://jsfiddle.net/mmNNJ/
la source
children
n'a pas marché mais ça l'acontents
fait..each
bloc comme le montre une réponse ci-dessous.Pas sûr de jQuery. Avec JavaScript brut, vous pouvez faire:
DEMO
Je ne sais pas à quel point cela est compatible avec tous les navigateurs.
Une variation pourrait être:
Pour plus d'informations, voir
Node.attributes
[MDN] .la source
while(child = child.nextSibling)
échoué. Merci!@jakov et @Andrew Whitaker
Voici une amélioration supplémentaire pour qu'il puisse gérer plusieurs éléments à la fois.
la source
La réponse de @ Jazzbo a renvoyé un objet jQuery contenant un tableau d'objets jQuery, qui n'étaient pas chaînables. Je l'ai changé pour qu'il renvoie un objet plus similaire à ce que $ .each aurait renvoyé:
(J'ai également nettoyé le code pour qu'il passe jslint.)
la source
each
boucle).La seule façon dont je peux penser est de tout copier manuellement: exemple jsfiddle
HTML
Jquery / Javascript
la source
@Andrew Whitaker: Je propose ce changement:
Ensuite, vous pouvez faire des choses comme:
$('<div>blah</div>').changeElementType('pre').addClass('myclass');
la source
J'aime l'idée de @AndrewWhitaker et d'autres, d'utiliser un plugin jQuery - pour ajouter le
changeElementType()
méthode. Mais un plugin est comme une boîte noire, peu importe le code, s'il est petit et fonctionne bien ... Donc, les performances sont requises, et sont plus importantes que le code."Pure javascript" a de meilleures performances que jQuery: je pense que le code de @ FelixKling a de meilleures performances que celui de @ AndrewWhitaker et d'autres.
Voici un code "pur Javavascript" (et "pur DOM"), encapsulé dans un plugin jQuery :
la source
Voici une méthode que j'utilise pour remplacer les balises html dans jquery:
la source
Avec
jQuery
sans itération sur les attributs:La
replaceElem
méthode accepte ci - dessousold Tag
,new Tag
etcontext
et exécute avec succès le remplacement:Bonne chance...
la source
Solution Javascript
Copiez les attributs de l'ancien élément dans le nouvel élément
Remplacez l'ancien élément par le nouvel élément
la source
map
crée un nouveau tableau inutilisé, il pourrait être remplacé parforEach
.Voici ma version. Il s'agit essentiellement de la version de @ fiskhandlarn, mais au lieu de construire un nouvel objet jQuery, il écrase simplement les anciens éléments par ceux nouvellement créés, donc aucune fusion n'est nécessaire.
Démo: http://jsfiddle.net/0qa7wL1b/
la source