Est-ce possible?
exemple:
$('a.change').click(function(){
//code to change p tag to h5 tag
});
<p>Hello!</p>
<a id="change">change</a>
Donc, cliquer sur l'ancre de changement devrait entraîner le <p>Hello!</p>
changement de la section (à titre d'exemple) en une balise h5 pour que vous vous retrouviez <h5>Hello!</h5>
après le clic. Je réalise que vous pouvez supprimer la balise p et la remplacer par une h5, mais y a-t-il quand même pour modifier une balise HTML?
"<" + el.outerHTML.replace(/(^<\w+|\w+>$)/g, "H5") + ">";
Ou fonction jQuery enfichable: lienVoici une extension qui va tout faire, sur autant d'éléments et autant de manières ...
Exemple d'utilisation:
ou
ou même
Source du plugin:
la source
return node;
devrait en fait êtrereturn this;
comme indiqué dans "l'ancienne version" du plugin. C'est essentiel pour enchaîner des événements comme$("tr:first").find("td").clone().replaceTag("li").appendTo("ul#list")
Plutôt que de changer le type de balise, vous devriez changer le style de la balise (ou plutôt la balise avec un identifiant spécifique.) Ce n'est pas une bonne pratique de changer les éléments de votre document pour appliquer des changements stylistiques. Essaye ça:
la source
J'ai remarqué que la première réponse n'était pas tout à fait ce dont j'avais besoin, alors j'ai fait quelques modifications et j'ai pensé que je la posterais ici.
Amélioré
replaceTag(<tagName>)
Arguments:
Retour:
D'accord, je sais qu'il y a quelques réponses ici maintenant, mais j'ai pris l'initiative d'écrire ceci à nouveau.
Ici, nous pouvons remplacer la balise de la même manière que nous utilisons le clonage. Nous suivons la même syntaxe que .clone () avec
withDataAndEvents
etdeepWithDataAndEvents
qui copient les données et les événements des nœuds enfants s'ils sont utilisés.Exemple:
La source:
la source
.children()
cela n'inclura aucun nœud purement textuel. Vous voudrez peut-être essayer.contents()
IIRC.L'idée est d'envelopper l'élément et de déballer le contenu:
Exemple d'utilisation:
Démo
la source
J'ai proposé une approche dans laquelle vous utilisez une représentation sous forme de chaîne de votre objet jQuery et remplacez le nom de la balise à l'aide d'expressions régulières et de JavaScript de base. Vous ne perdrez aucun contenu et n'avez pas à boucler sur chaque attribut / propriété.
Enfin, vous pouvez remplacer l'objet / nœud existant comme suit:
la source
C'est ma solution. Il permet de basculer entre les balises.
la source
C'est le moyen rapide de modifier les balises HTML dans votre DOM en utilisant jQuery. Je trouve que cette fonction replaceWith () est très utile.
la source
Vous pouvez obtenir par
data-*
attribut commedata-replace="replaceTarget,replaceBy"
si avec l' aide de jQuery pour obtenirreplaceTarget
etreplaceBy
valeur par la.split()
méthode après l' obtention de valeurs puis utilisez la.replaceWith()
méthode.Cet
data-*
attribut technique permet de gérer facilement tout remplacement de balise sans changer ci-dessous (code commun pour tout remplacement de balise).J'espère que l'extrait ci-dessous vous aidera beaucoup.
la source
La fonction suivante fait l'affaire et conserve tous les attributs. Vous l'utilisez par exemple comme ceci:
changeTag("div", "p")
Pour être sûr que cela fonctionne, consultez l'exemple suivant
la source
Y a-t-il une raison spécifique pour laquelle vous devez changer le tag? Si vous voulez simplement agrandir le texte, changer la classe CSS de la balise p serait une meilleure façon de procéder.
Quelque chose comme ça:
la source