如何获取与当前DOM树相对应的HTML?

时间:2010-01-22 19:54:46

标签: javascript jquery dom

jQuery(“html”)。html()似乎检索了大部分内容,但包装标记除外。

DOM经过大量修改,因此原始资源的使用并不多。

  • 可靠吗?
  • 仅仅采用jQuery的输出并包装它是一个好主意吗?我可以在这里看到至少一些doctype问题,并包含不应该重新运行的脚本。
  • 有更好的方法吗?

编辑:jQuery(“”)。append(jQuery(“html”)。clone())。html()几乎可以工作,除了doctype。有没有简单的方法来获得它?

编辑2:我需要doctype主要是为了获得适当的怪癖/几乎标准/标准模式。 document.compatMode有一半,是不够的?

4 个答案:

答案 0 :(得分:2)

jQuery使用innerHTML来获取HTML。您不会使用此属性获取确切的DOM状态。例如,input框的内容或select框的状态将不会保持不变,除非您在调用innerHTML之前正确修改它。

您正在谈论的这个wrapping标签是什么?对于大多数情况,innerHTML应该可以正常工作。

例如,我将此代码用于selectinput框的状态。

// it's defaultValue so we can use innerHTML
$("#divContentInside input").each(function () {
    this.defaultValue = this.value;
});
// go through each select and replace
// it's selection so we can use innerHTML
$("#divContentInside select > option").each(function () {
    if (this.selected) {
        this.setAttribute("selected", true);
    } else {
        this.removeAttribute("selected");
    }
});

我没有发现其他元素的状态一致性问题,但可能存在。

答案 1 :(得分:1)

您可以使用标准DOM命令:

获取HTML标记的innerHTML

document.body.parentNode.innerHTML

获取Doctype信息

document.body.parentNode.previousSibling;

答案 2 :(得分:0)

http://brandonaaron.net/blog/2007/06/17/jquery-snippets-outerhtml/ jquery的outerHTML实现。

修改

快速搜索来自document.doctype选项here is a full reference。删除了旧的和现在不必要的文本/代码。

答案 3 :(得分:-2)

您是否尝试过$(document).html()