在文本周围包装一个html结构

时间:2013-08-09 11:38:47

标签: jquery dom-manipulation

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

示例:

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

期望的结果:

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

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

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

5 个答案:

答案 0 :(得分:2)

有些事情:

var text = "mytext";
var html = "<div><p><span></span></p></div>";
var div = $(html);
div.find('span').html(text);
div.appendTo(someOtherElement);

答案 1 :(得分: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

我希望它有所帮助。

答案 2 :(得分:0)

您是否尝试在jQuery中使用.wrap()? 尝试

    $('span').wrap(text);

答案 3 :(得分:0)

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

text = "mytext"
oldHtml = "<div><p><span>[0]</span></p></div>"
newHtml = oldHtml.replace("[0]",text);

答案 4 :(得分: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

Here's a fiddle