ok hier ist das, was ich habe:(jquery) ändert verschachtelt gleichen HTML-Tag zu anderem bbcode Tag
<div id="mydiv">
<font color="green"><font size="3"><font face="helvetica">hello world</font></font></font>
</div>
Ich weiß, dass die Tags sind seltsam, aber das ist, was von der Website produziert. Also im Grunde ich die Schriftart-Tag bbcdoe Tag ändern möchten, die jQuery-Code schrieb ich:
$("#mydiv").find("font").text(function(){
var text = $(this).text();
var size = $(this).attr("size");
var color = $(this).attr("color");
var face = $(this).attr("face");;
if(size!=undefined){
return '[size="'+size+'"]'+text+'[/size]';
}
if(color!=undefined){
return '[color="'+color+'"]'+text+'[/color]';
}
if(face!=undefined){
return '[type="'+face+'"]'+text+'[/type]';
}
});
so was habe ich nur: [color = "green"] Hallo Welt [/ color]. immer nur das erste Tag. irgendeine Idee?
ps: Ich habe versucht, jedes, replaceWith, html(), alle das gleiche Ergebnis. Nur das erste Tag wird geändert.
Die Funktion '.text()' jQuery gibt den Text innerhalb des Elements zurück, nicht den HTML-Code innerhalb des Elements, sodass alle HTML-Tags entfernt werden. Es gibt andere Probleme mit Ihrem Code, wie zum Beispiel das letzte, wenn "Größe" überprüft wird, wenn es "Gesicht" überprüfen soll. –
Übrigens entspricht Ihr Beispielcode nicht Ihrer angeblichen Ausgabe. Wenn du wirklich '[color =" green "] hallo world [/ color]' willst, solltest du "[color =" '+ color + "]' + text + '[/ color]' ausgeben, also auch die 'text' und ohne das erste'] '. –
danke für die korrektur –