jQuery & 参数元素
Posted
技术标签:
【中文标题】jQuery & 参数元素【英文标题】:jQuery & the param element 【发布时间】:2012-03-07 20:42:41 【问题描述】:这段代码对吗
$('<param><div></div></param>')
产生这个输出?
[<param>, <div></div>]
而大多数其他标签(例如:部分)
$('<section><div></div></section>')
生产
[<section>...</section>]
换句话说,jquery 似乎删除了 param 元素中的元素并将它们放在旁边。我知道您通常不会将 dom 元素放在 param 标记中。但是我使用 jquery 来遍历一个 XML 文档,并且遇到了这个问题。
解决方法是什么?
【问题讨论】:
jQuery 期望 html 而不是 xml,在 html 中param
是一个自闭合标签,不能有子元素,所以 jQuery 会为您解决这个问题。解决方法是使用 XML 解析器.. I.E jQuery.parseXML
我不认为 jQuery 修复了任何东西,它是使用 innerHTML
(jquery 使用它)。 document.getElementById('mydiv').innerHTML = '<param><div></div></param>'
效果一样。
【参考方案1】:
正如我在评论中所说,jQuery 需要 HTML 而不是 XML,在 HTML 中 param
是一个自闭合标签,不能有子节点,所以 jQuery 会为你解决这个问题。
你可以试试:
$( $.parseXML( '<param><div></div></param>' ) ).children()
这给出了:
[<param>...</param>]
【讨论】:
【参考方案2】:您应该开始创建一个有效的 XML 文档:
var xml ='<param><div></div></param>';
var xmlDoc = $.parseXML( xml );
然后你就可以处理这个文档了:
var $xml = $( xmlDoc );
【讨论】:
【参考方案3】:标签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>
【讨论】:
以上是关于jQuery & 参数元素的主要内容,如果未能解决你的问题,请参考以下文章