返回元素的html以及jquery中的元素

时间:2012-07-10 07:48:22

标签: javascript jquery

我标记为

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

如果我使用$(“#div1”)。html(),则返回div#div2。但我希望得到完整的HTML。即,与div#div1一起。

有没有办法做到这一点?

7 个答案:

答案 0 :(得分:3)

你可以尝试:

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

编辑:

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

document.getElementById('div1').outerHTML

答案 1 :(得分:0)

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

var html = $('<div>').append($('#top').clone()).remove().html();

答案 2 :(得分:0)

使用.parent():

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

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

答案 3 :(得分:0)

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

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

答案 5 :(得分:0)

$("<div />").append($("#div1").clone()).html();

FIDDLE

答案 6 :(得分:0)

您可以创建一个简单的jQuery插件来为您完成工作,允许您在存在时使用本机.outerHTML属性,或者在不存在时将其填充。

(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/