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