0

我已经标记为

<div id="div1">
   <div id="div2">
     blah blah
   </div>
</div>

如果我使用 $("#div1").html(),它将返回 div#div2。但我想获得完整的 html。即,与 div#div1 一起。

有没有办法做到这一点?

4

7 回答 7

3

你可以试试:

$('#div1')[0].outerHTML

编辑:

相同的解决方案,但不使用 jQuery(更好的性能):

document.getElementById('div1').outerHTML
于 2012-07-10T07:51:47.620 回答
0

试试这个:http: //jsfiddle.net/96u9c/3/

:)特殊需要的功能,现在您可以将其用于您自己的任何目的。

justtext将为您提供父标签的唯一文本,而inner版本将为您提供子文本。

希望能帮助到你:)

您可以很好地将其添加到项目中的通用 javascript 文件中,或者对其进行自定义并将其用作项目中的插件。

代码

jQuery.fn.justtext = function() {

    return $(this).clone()
            .children()
            .remove()
            .end()
            .text();

};

jQuery.fn.justtextinner = function() {

    return $(this).clone()
            .children()
            .end()
            .text();

};

alert($('#div1').justtextinner());​
于 2012-07-10T07:57:17.580 回答
0

我会说尝试选择父元素,或者另一种方法是这样做:

var html = $('<div>').append($('#top').clone()).remove().html();
于 2012-07-10T07:51:10.923 回答
0

您可以创建一个简单的 jQuery 插件来为您完成这项工作,允许您在本地.outerHTML属性存在时使用它,或者在它不存在时使用 polyfill。

(function($) {
  if('outerHTML' in document.createElement('div')) {
    $.fn.outerHtml = function() {
      return this[0].outerHTML;
    }
  }
  else {
    $.fn.outerHtml = function() {
      return $("<div />").append(this.eq(0).clone()).html();
    }
  }
}(jQuery));

一个例子是http://jsfiddle.net/steveukx/qUEyp/

于 2012-07-10T08:19:21.443 回答
0

使用 .parent():

$("#div1").parent().html();

然而,这也将获得所有兄弟姐妹的 html。您可以将 div1 包装在另一个 div 中... :)

于 2012-07-10T07:53:10.750 回答
0

.html()返回innerHTML你需要outerHTML。可能会有所帮助。

于 2012-07-10T07:53:21.070 回答
0
$("<div />").append($("#div1").clone()).html();

小提琴

于 2012-07-10T08:04:09.670 回答