2009-06-02 6 views
0

私は、次の構造のXMLノードで働いている:jqueryのIE8セレクタbizarreness

<CF> 
    <T> 
     <TX>title</TX> 
     <em>15:2:</em> 
    </T> 
    <KW> 
     <TX>SOMETHING ELSE</TX> 
    </KW> 
    <!-- OTHER TAGS, SOME OF WHICH HAVE A <TX> CHILD --> 
</CF> 

物事は、多かれ少なかれ、私はFirefoxで期待どおりに動作しますが、私はIE8で奇妙な行動を取得しています。例えば、以下は私に長さ14のjQueryオブジェクトを与える:

それは一つだけ(「CF」タグが順番に一つだけ「TX」が含まれている唯一の「T」のタグが含まれていなければなりません
jQuery("T TX", xmlDoc).length 

タグ)。

jQuery("TX", xmlDoc).length 

私はむしろ結果の同等またはそれ以上の数よりも少ない得る(jQueryオブジェクトの長さ:私は以下のように、セレクタから「T」を削除する場合、違和感に加え

12です)。

最初の質問は、TXタグが1つしかなく、「T」タグが1つしかない場合、jqueryは「T」の子孫である14個の「TX」タグを見つけるのはなぜですか?

2番目の質問は、「T」を削除してセレクタを簡略化すると、結果が増えるのではなく、結果が少なくなる理由は何ですか?

私は何か間違っているのですか、またはバグに遭遇しましたか?

答えて

0

「<TX>タイトル</TX >」に14文字あります。実際のTX要素がいくつあるかわからないので、2番目のクエリの12個がドキュメント内のTX要素の数であるかどうかはわかりません。

種類の狂ったと壁から離れて...しかし、長さのプロパティは、あなたが戻って考えると返すものではありませんperhapse?

jQuery('T', mydoc).find('TX').length 

をし、jQueryを使ってIE8に非HTMLタグを解析に問題があるようです

+0

Jrista、intersting theory(と印象的な観察!)しかし "タイトル"は単なるテキスト例です。実際のXML文書では、テキストはより長くなります。 – morgancodes

+0

笑...私は試してみた...それは私が見ることができた唯一の明白なものではなかった。あなたは完全な文書を投稿することができますか?より多くのデータを集めることができるより多くの情報があるかもしれません... – jrista

1

おそらく、あなたはこのような何かを試すことができます。私はちょうどthis discussionに出会いました。提案された答えはMicrosoft.XMLDOMを使ってXMLからDOMオブジェクトを構築することです。ここで重要な部分です:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async="false"; 
xmlDoc.loadXML(text); 

私はこれを試してみましたが、それだけで$、文字列からXMLドキュメントを構築する($()と$ .findが何かを返すいなかったとき、私はIE8を持っていたいくつかの問題を修正しました。フィルタが機能します)。

アップデート:代わりに、$ .parseXML()を参照してください。

0

何が起こるかを参照してください。