jQuery this.html() renvoie undefined
Je suis reformatage vraiment mauvaise HTML à l'aide de jQuery. J'ai besoin d'épissage de la fratrie <font>
éléments ensemble. J'ai essayé ce code:
$('font+font').each(function() {
this.html().appendTo( this.prev() );
this.remove();
});
mais il m'a donné ce message d'erreur: TypeError: 'undefined' est pas une fonction (évaluation 'this.html()')
Voici un exemple de code HTML:
<font>This fragment </font><font>is actually one element.</font>
Mise à jour
J'ai mis à jour mon code avec $(this)
, mais il ne fonctionne toujours pas. Lorsque j'exécute ce code
$('font+font').each(function() {
$(this).html().appendTo( $(this).prev() );
$(this).remove();
});
J'obtiens cette erreur: TypeError: 'undefined' est pas une fonction (évaluation '$(this).html().appendTo( $(this).prev() )')
<font>
n'est pas en HTML...Donc "vraiment mauvais code HTML". C'est de balisage à partir du milieu des années 90.
Oh désolé, j'ai raté la partie. Ouais, je fais cela tout le temps, avec beaucoup de beaucoup plus laide du code. Ancien logiciel de commerce électronique avec daté des modèles de la
spacer.gif
disposition de table de jours...Je vous recommandons de copier les éléments eux-mêmes à la place.
$("font + font").each(function() { $(this).contents().appendTo($(this).prev()).end().remove(); });
.très agréable, mais vous devez l'utiliser
.end().end()
en place de .end()
.
OriginalL'auteur Brandon Lebedev | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
this
doit être encapsulée dans un objet jQuery, avant de vous pouvez utiliser les méthodes jQuery..html()
retourne une chaîne de caractères. Vous ne pouvez pas utiliser les méthodes jQuery sur une chaîne sans emballage. Utilisation$this.prev().append( $this.html() )
à la place.$(this)
plus d'une fois, il est judicieux de stocker$(this)
dans une variable temporaire. C'est la convention de préfixe jQuery objets avec un signe dollar.Code:
OriginalL'auteur Rob W
Lorsque vous utilisez un chaque instruction, il retourne
this
comme un élément du DOM, pas un objet jQuery..html()
doit être appelée sur un objet jQuery. Donc, la première partie de votre solution est de convertirthis
dans un élément avec jQuery le$
symbole.Le deuxième problème est que
html()
retourne une chaîne de caractères. Vous ne pouvez pas appelerAppendTo()
sur une chaîne, seul un objet jQuery. Puisque vous travaillez avec.html()
je vais supposer que vous voulez que le contenu de la chaîne et non pas le contenu complet. Si c'était le cas, Rob réponse est plus approprié.Le code final finit par ressembler à ceci:
http://jsfiddle.net/b6vLL37k/1
OriginalL'auteur mrtsherman
Vous devez utiliser
$(this)
pour jQuery pour vous aider.OriginalL'auteur Diodeus - James MacFarlane
Vous devez utiliser
$(this)
pasthis
OriginalL'auteur streetlogics
Je n'étais pas en mesure de corriger votre code. Comment quelque chose comme cela:
<font>
élément dans un seul élément, ce qui n'est pas ce que je veux faire.OriginalL'auteur osahyoun