这段代码是否正确
$('<param><div></div></param>')
产生这个输出?
[<param>, <div></div>]
而大多数其他标签(例如:部分)
$('<section><div></div></section>')
产生
[<section>...</section>]
换句话说,jquery似乎删除了param元素中的元素并将它们放在旁边。我知道你通常不会将dom元素放在param标签中。但我正在使用jquery遍历XML文档,并遇到了这个问题。
解决方法是什么?
答案 0 :(得分:4)
正如我在评论中所说的那样,jQuery期望HTML不是XML,HTML param
中是一个自我结束标记,不能有子节点,所以jQuery为你修复了这个。
您可以尝试:
$( $.parseXML( '<param><div></div></param>' ) ).children()
给出了:
[<param>...</param>]
答案 1 :(得分:1)
您应该开始创建有效的XML文档:
var xml ='<param><div></div></param>';
var xmlDoc = $.parseXML( xml );
然后你可以使用这个doc:
var $xml = $( xmlDoc );
答案 2 :(得分:0)
标签PARAM是一个自动关闭标签,它不能包含其他元素.μ
应用<param><div></div></param>
时,它被固定为<param><div></div>
,因此您在jquery对象中获得了两个元素。
例如<input><div></div></input>
也是如此
INPUT自动关闭,结果为<input><div></div>
我认为jQuery不会修复它,只是因为jQuery使用innerHTML
。
document.getElementById('mydiv').innerHTML = '<param><div></div></param>';
// you'll get two child elements <param> + <div>