2

给定一些文本和 html 结构,我如何创建一个新的 html 片段,其中结构包裹在文本周围?

例子:

text = "mytext"
html = "<div><p><span></span></p></div>"

期望的结果:

newHtml = "<div><p><span>mytext</span></p></div>"

如果可能,使用纯 jquery,无需手动解析 html。请注意,“文本”是文字字符串,而不是文档中的文本节点。

当然,我正在寻找的代码应该适用于任意 html,而不仅仅是上面的示例。

4

5 回答 5

2

类似的东西:

var text = "mytext";
var html = "<div><p><span></span></p></div>";
var div = $(html);
div.find('span').html(text);
div.appendTo(someOtherElement);
于 2013-08-09T11:41:59.893 回答
0

尝试关注

var text = "mytext",
    mainDiv = $("<div/>"),
    para = $("<p/>"),
    span = $("<span/>", {"html":text});

mainDiv.append(para.append(span));

//or you can write all above in one liner

我希望它有帮助。

于 2013-08-09T11:43:16.480 回答
0

你试过在 jQuery 中使用 .wrap() 吗?尝试

    $('span').wrap(text);
于 2013-08-09T11:44:55.733 回答
0

您可以在占位符的帮助下实现它,如下所示,

text = "mytext"
oldHtml = "<div><p><span>[0]</span></p></div>"
newHtml = oldHtml.replace("[0]",text);
于 2013-08-09T11:48:26.647 回答
0

为此感谢@Blender(根据要求作为答案发布):

text = "mytext"
html = "<div><p><span></span></p></div>"

newHtml = $(html);
newHtml.find('*:last').text(text);

console.log(newHtml.get(0)); // <div><p><span>mytext</span></p></div>

html因此,从字符串构造一个 jQuery 对象,然后找到:last后代(在本例中为span),并设置text.

这是一个小提琴

于 2013-08-12T09:27:54.437 回答