将字符串解析为 javascript 中的 html

Parse string as a html in javascript

我有一个 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

对于 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");
});

要让您的 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);

然后您将 'parsed' 作为 'normal' jquery 对象,您可以根据需要对其进行操作,例如:

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

由于 .wrap() 应用标签,在您的情况下,您需要使用 .append.prepend,例如:

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