2010-12-13 7 views
1

Je dois cloner le texte d'un élément, disons un h1. J'utilise clone() de jQuery, mais je veux juste copier le texte et non la balise h1 afin que je puisse l'insérer dans une balise h3. J'ai essayé d'utiliser text() après le .clone(), mais cela ne fonctionne pas.Comment cloner du texte en utilisant clone() de jQuery?

Répondre

6

Cela dépend de ce que vous êtes après, mais il semble que vous voulez juste pour définir le texte à la même chose, comme ceci:

$("h3").text($("h1").text()); 

L'alternative est de .append() la .text() du <h1>, que vous pouvez le faire directement comme ceci:

$("h3").append($("h1").text()); 

Mais, comme @bobince rappelle ci-dessous cela peut être dangereux dans certaines situations, l et jeter un simple:

<h1>&lt;script&gt;alert("hi, I'm malicious script");&lt;/script&gt;</h1> 

You can see it in action here ... vous pouvez imaginer comment cela pourrait être problématique avec un script méchant.

+5

Vous voulez certainement le second. Le premier prend le texte d'un élément et l'utilise comme HTML, donc s'il y a des caractères '<' ou '&' dedans, ils seront traités comme du balisage (pouvant entraîner un trou de sécurité XSS). – bobince

+0

@bobince - certainement un point valide, j'ai changé l'ordre ci-dessus, avec une illustration afin que les gens puissent voir le scénario d'exploit dont vous parlez. –

Questions connexes