使jQuery不丢弃某些元素

使jQuery不丢弃某些元素,jquery,dom,Jquery,Dom,我尝试使用jQuery解析一些HTML,如以下简单示例: $('<html><body><div><p>Test</p></div></body>') $(“测试””) 现在,结果对象有点令人失望。 当我使用.html()函数时,我应该获得根元素中的所有内容 不幸的是,jQuery丢弃了,&标记 所以我得到: $('<html><body><div><p>Tes

我尝试使用jQuery解析一些HTML,如以下简单示例:

$('<html><body><div><p>Test</p></div></body>')
$(“测试”

”)
现在,结果对象有点令人失望。 当我使用.html()函数时,我应该获得根元素中的所有内容

不幸的是,jQuery丢弃了
&
标记

所以我得到:

$('<html><body><div><p>Test</p></div></body>').html()
"<p>Test</p>"
$('Test

).html() “测试

而不是身体。 它将第一个元素视为根元素

我可以用这个:

$('<html><body><div><p>Test</p></div></body>')[0].outerHTML
"<div><p>Test</p></div>"
$('Test

')[0]。outerHTML “测试

但是我仍然没有想要解析的标签

那么,我怎样才能避开这个问题呢?
我可以创建一个新的jQuery dom窗口对象吗?

我不知道为什么要使用它,但解决问题的方法(不确定是否最好)是使用方法
.append()

$('').append('').append('').append('Test

');

这将创建一个
标记,并用其他元素填充它。

我不知道您为什么要使用此标记,但解决问题的方法(不确定是否最好)是使用方法
.append()

$('').append('').append('').append('Test

');

这将创建一个
标记,并用其他元素填充它。

当您向jQuery传递一个HTML字符串时,它将创建一个文档片段,而不是整个文档。因此,它不会有您询问的部件,例如


如果需要所有这些部分,您可以创建一些不同的内容,如iframe。

当您传递jQuery HTML字符串时,它会创建一个文档片段,而不是整个文档。因此,它不会有您询问的部件,例如


如果您需要所有这些部分,您可以创建一些不同的东西,比如iframe。

奇怪的是,这在Chrome和Firefox中都非常有效:

$('<html>').html('<html><body><div><p>Test</p></div></body>')
$('').html('Test

'))
添加
标记也不会破坏它

标记添加到原始选择器后,它将停止工作:

> $('<html></html>')
[<html>​</html>​]
> $('<html><body></body></html>')
[]
$('')
[​​]
> $('')
[]

奇怪的是,这在Chrome和Firefox中都非常有效:

$('<html>').html('<html><body><div><p>Test</p></div></body>')
$('').html('Test

'))
添加
标记也不会破坏它

标记添加到原始选择器后,它将停止工作:

> $('<html></html>')
[<html>​</html>​]
> $('<html><body></body></html>')
[]
$('')
[​​]
> $('')
[]

我很确定jQuery不允许您这样做。但是,您可以将文档视为XML并以这种方式进行解析:

$.parseXML('<html><body><div><p>Test</p></div></body></html>').childNodes[0]
$.parseXML('Test

).childNodes[0]

$.parseXML
创建了一个XML文档,而
.childNodes[0]
将成为
节点。

我很确定jQuery不允许您这样做。但是,您可以将文档视为XML,并以这种方式对其进行解析:

$.parseXML('<html><body><div><p>Test</p></div></body></html>').childNodes[0]
$.parseXML('Test

).childNodes[0]

$.parseXML
创建了一个XML文档,而
.childNodes[0]
将成为
节点。

我认为这是不可能的,即使是香草。JS@JanDvorak-它在vanilla JS中对我有效:
document.createElement('body'))
很好用。我认为这是不可能的,即使是香草口味的。JS@JanDvorak-它在vanilla JS中对我有效:
document.createElement('body'))
效果很好。这是一个有趣的想法!它在XHTML上可以很好地工作,但不幸的是并非所有HTML都是有效的XML。这是一个有趣的想法!它在XHTML上也可以很好地工作,但不幸的是并非所有HTML都是有效的XML。它在某种程度上可以工作,是的。但我需要解析整个给定字符串。以后不要追加片段。一次你像这样给html标签添加属性,它会停止工作它会在某种程度上起作用,是的。但是我需要解析一个完整的给定字符串。以后不要附加片段。一旦你像这样给html标签添加属性,它会停止工作。这是迄今为止最好的方法,但它总是会返回一个body和head标签,即使没有给出。这是这是迄今为止最好的方法,但它总是返回一个body和head标记,即使没有给出。