【发布时间】:2012-03-26 15:50:22
【问题描述】:
好的,这就是我所拥有的:
<div id="mydiv">
<font color="green"><font size="3"><font face="helvetica">hello world</font></font></font>
</div>
我知道标签很奇怪,但那是网站制作的。 所以基本上我想把字体标签改成bbcdoe标签,我写的jquery代码:
$("#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]';
}
});
所以我得到的只是:[color="green"] hello world [/color]。总是只有第一个标签。有什么想法吗?
ps:我都试过了,replaceWith,html(),结果都一样。只有第一个标签是变化的。
【问题讨论】:
-
.text()jQuery 函数返回元素内的文本,而不是元素内的 HTML,因此任何 HTML 标记都将被删除。您的代码还有其他问题,例如最后一个 if 检查size时应该检查face。 -
顺便说一下,您的示例代码与您声称的输出不匹配。如果真的要
[color="green"] hello world [/color],就应该输出'[color="'+color+"]'+text+'[/color]',即包括text,不包括第一个]。
标签: javascript jquery html tags