jQuery&参数元素

时间:2012-02-16 12:44:37

标签: javascript jquery xml dom

这段代码是否正确

$('<param><div></div></param>')

产生这个输出?

[<param>, <div></div>]

而大多数其他标签(例如:部分)

$('<section><div></div></section>')

产生

[<section>...</section>]

换句话说,jquery似乎删除了param元素中的元素并将它们放在旁边。我知道你通常不会将dom元素放在param标签中。但我正在使用jquery遍历XML文档,并遇到了这个问题。

解决方法是什么?

3 个答案:

答案 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>