【问题标题】:How to get html string of a child tag and parent tag using jquery?如何使用jquery获取子标签和父标签的html字符串?
【发布时间】:2009-12-16 19:23:19
【问题描述】:

例如,如果我有 HTML ul 类似的列表

<ul id="ulIdentificator"> 
    <li id="li0"></li>
    <li id="li1"></li>
    <li id="li2"><label id="label1"></label></li>   
</ul>

如果我像这样使用 jQuery

var htmlStr = $("#li2").html();

结果将只有包含标签标签&lt;LABEL id="label1"&gt;&lt;/LABEL&gt;&lt;/li&gt;的字符串我需要获取包含此&lt;LI id="li2"&gt;&lt;LABEL id="label1"&gt;&lt;/LABEL&gt;&lt;/LI&gt;的Html字符串

【问题讨论】:

标签: jquery html jquery-selectors


【解决方案1】:

second OuterHTML techniqueAndres 提到(来自 Web Architects' Blog)适用于所有浏览器,因此它可能是一个更好的选择。基本思想是,您可以通过将一个元素设置为另一个元素的 innerHTML 来获取该元素的外部 HTML:

var outerHtml = $("<div/>").append($("#li2").clone()).html();

只有一点有点棘手 - 确保 clone 您的原始元素,这样您就不会从 DOM 中删除它。

如果您经常这样做或想要对元素数组执行此操作,则可能值得遵循链接示例并制作一个小插件来执行此操作。

【讨论】:

  • +1 非常好的答案。但是在this other question 中,您拥有相同的技术以及解决IFrames 问题的方法。
【解决方案2】:

您还可以使用 Jeff Sternal 提出的方法编写一个小型 jQuery 插件:

// jQuery plugin 'htmlWithParent'

jQuery(function($) {

  $.fn.htmlWithParent = function() { return $j("<div/>").append($j(this).clone()).html(); };

});

并使用这个小插件,例如:

var htmlCode = $("<p><span>Helo world!</span></p>");

// Return only child nodes: <span>Helo world!</span>
var output1 = $(htmlCode).html();

// Return whole HTML code (childs + parent): <p><span>Helo world!</span></p>
var output2 = $(htmlCode).htmlWithParent();

非常有用的方法。 ;)

【讨论】:

  • 谢谢。 ;) 我总是制作小的自定义 jQuery 插件。更少的代码,更透明。
【解决方案3】:

【讨论】:

  • OuterHTML II 技术非常简单,值得在您的答案正文中重现。
  • 好的,这是正确的答案,但是如果您添加一些示例而不仅仅是 2 个链接,我会接受它,以便其他 SO 人在这里看到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 2012-01-19
  • 2011-05-10
  • 2017-02-02
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多