在javascript中将字符串解析为html

时间:2016-09-14 07:51:23

标签: javascript jquery html html-parser

我有一个HTML标签,因为字符串来自控制器..我需要在html中解析它..代码就像,

var str = '<span id="c.s.y"></span> Y <span id="c.s.m"></span> M';
var parsed = $.parseHTML(str);

将此解析后的字符串转换为html ..但我必须在每个单独的标记之前附加一些文本。我将每个标记取为,

$.each( parsed , function( i, el ) { console.log("asd" + el + "asd"); });

我无法在每个标记中附加文字,只显示[object HTMLSpanElement] [object Text] ..如何在此处附加文字.. 我希望输出为 asd <span id="c.s.y"></span> asd asd Y asd asd <span id="c.s.m"></span> asd asd N asd

2 个答案:

答案 0 :(得分:1)

对于HTML元素,您可以使用outerHTML属性

$.each(parsed, function(i, el) {
var $el = $(el);
if ($el.prop('outerHTML'))
    console.log("asd" + $el.prop('outerHTML') + "asd"); 
else
    console.log("asd" + $el.text() + "asd");
});

答案 1 :(得分:0)

要将html变成可以使用的内容,请使用:

$("<div/>").html(txt);

例如,在你的情况下:

var str = '<span id="c.s.y"></span> Y <span id="c.s.m"></span> M';
var parsed = $("<div/>").html(str);

然后你解析了#39;作为一个正常的&#39;您可以根据需要操作的jquery对象,例如:

parsed.find("*").wrap("<span>");
parsed.contents().wrap("<span>");
$("#myid").append(parsed);

由于.wrap()会应用代码,因此您需要使用.append.prepend,例如:

parsed.find("*").andSelf().append(" asd ").prepend(" asd ");