2012-02-16 15 views
1

が、それは、このコードのjQuery&param要素

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

は、この出力を生成することが正しいですか?

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

他のほとんどのタグ(例:セクション)で、一方、

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

は、言い換えれば

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

を生成し、jqueryのは、param要素内の要素を削除し、それと並んでそれらを置くように見えます。あなたは通常、paramタグ内にdom要素を配置しないことに気付いています。しかし、私はjqueryを使用してXML文書をトラバースし、この問題にぶつかりました。

回避方法は何ですか?

+3

jQueryはhtmlがxmlでないことを期待しています。「param」は自己終了タグであり、子要素を持つことができないため、jQueryがそれを修正します。回避策は、XMLパーサーを使用することです。I.E 'jQuery.parseXML' – Esailija

+0

jQueryは何も修正しないと思います。これは' innerHTML'(jqueryが使用します)の使用です。 'document.getElementById( 'mydiv')。innerHTML = '

' 'と同じ効果があります。 –

答えて

4

私がコメントで言ったように、jQueryのでは、HTMLではないXMLを期待HTML paramは自己終了タグであり、子ノードを持つことができないので、jQueryがそれを修正します。

あなたは試すことができます:

与え
$($.parseXML('<param><div></div></param>')).children() 

[<param>...</param>] 
1

あなたは、有効なXMLドキュメントの作成を開始する必要があります

var xml ='<param><div></div></param>'; 
var xmlDoc = $.parseXML(xml); 

次にあなたがこのドキュメント上で動作することができます:

var $xml = $(xmlDoc); 
0

をタグPARAMが自動終了タグである<param><div></div></param>を適用する場合、それは

inside.μ他の要素を含めることはできませんが<param><div></div>に固定されているので、jqueryオブジェクトに2つの要素があります。

たとえば、<input><div></div></input>と同じことが起こります。 jQueryのinnerHTMLを使用していますので、それは単純で、
INPUTは、自動閉鎖であり、これは、私はjQueryのは、それを修正することはないと思う<input><div></div>

になります。