我正在尝试使用JQuery使用<source>
或$(xml)
解析一个名为$.parseHTML(xml)
的元素的简单XML片段。使用空<source />
标记错误地解析生成的对象,并将源标记内容解析为文本节点兄弟。例如,var xml
设置为此XML片段:
<root>
<name>Some name</name>
<source>Some source</source>
</root>
调用console.log($(xml)[0])
会导致:
<root>
<name>Some name</name>
<source />
"Some source"
</root>
请注意空</source>
标记和文本作为兄弟。
但是,当元素名称更改为sourced
时,它可以正常工作。或者,如果我使用$.parseXML(xml)
,则DOM包含正确的<source>Some source</source>
内容。
这是一个JQuery错误,还是我在这里做错了什么?
答案 0 :(得分:0)
根据MDN,
<source>
是一个空的HTML元素,如<img>
和<input>
。您无法使用它来环绕文本,并且没有</source>
标记(因此忽略此无效标记)。它用于指定包含它的<picture>
,<audio>
或<video>
元素的资源位置,如下例所示:
<video controls>
<source src="foo.webm" type="video/webm">
<source src="foo.ogg" type="video/ogg">
<source src="foo.mov" type="video/quicktime">
I'm sorry; your browser doesn't support HTML5 video.
</video>
$.parseHTML()
将其解析为浏览器(事实上,它通常只使用浏览器自己的HTML解析功能)。
由于您的数据是XML而非HTML,因此您应该使用$.parseXML()
。