【问题标题】:wrap a html structure around a text将 html 结构包裹在文本周围
【发布时间】:2013-08-09 11:38:46
【问题描述】:

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

例子:

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

想要的结果:

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

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

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

【问题讨论】:

  • 类似$("&lt;div&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;").find('*').last().text('foo')?
  • @Blender:是的,类似这样的……有更简单的解决方案吗?
  • 更简单?没有.insertTextIntoDeepestDescendant() 方法...
  • 我认为@Blender 的方法非常简单。您可以将*last 组合在一起,但本质上是相同的:jsfiddle.net/MnJkE/4
  • 你总是要在 span 元素之间插入文本吗?

标签: jquery dom-manipulation


【解决方案1】:

类似于:

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

【讨论】:

【解决方案2】:

为此感谢@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

【讨论】:

    【解决方案3】:

    尝试关注

    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
    

    我希望它有所帮助。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        您可以通过以下方式在占位符的帮助下实现它,

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

        【讨论】:

        • 谢谢!我想过这样的事情,但它不能满足我的需要(html来自外部,我不能在那里插入任何占位符)。
        • 好吧,我会在这个问题上回复你。你总是要在 span 元素之间插入文本吗?
        • 不,并非总是如此。可以有任何html。
        • 那么你怎么知道你想在哪里插入文本呢?
        • 文本将被插入到最底部的节点中,就像在$.wrap中一样
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 1970-01-01
        • 2021-02-12
        • 2015-05-09
        • 1970-01-01
        相关资源
        最近更新 更多