2011-10-25 2 views
-1

以下のコードを使用して例外が発生する理由を誰に教えてもらえますか?jQueryの例外(セレクタ[、context])

var invalidhtml = '<tr><div id="residualErrors" style="display:none;"></div><form action="" method="post"><table><tr><td></td></tr></table></form></tr>'; 

var form = $("form", invalidhtml); 
+0

"somehtml"とは何ですか? –

+0

これは意味をなさないです、あなたのvar 'invalidhtml'は再利用されず、コンテンツ文字列にはクローズがありません。さらに、文字列のhtmlは無効です。 –

+0

私はsomehtmlがinvalidhtmlであると仮定します。その場合、間違ったデータ型をコンテキストとして渡している点で@Cliveは正しいです。 – swatkins

答えて

0

「tr」要素の下に「td」要素がないため、htmlが無効であるという問題があります。 jQueryはこれを正常に処理できますが、 "tr"要素内に "table"が含まれていれば、例外が発生します。

私が問題を抱えていた元の場所ははるかに複雑なhtmlだったので、誰かを助けることを願っています。

以下のvalidhtmlの例のいずれかが機能しますが、無効なものは無効です。

var invalidhtml = '<tr><form action="" method="post"><table><tr><td></td></tr></table> </form></tr>';   

var validhtml = '<tr><form action="" method="post"></form></tr>';   

var validhtml2 = '<div><form action="" method="post"><table><tr><td></td></tr></table> </form></div>';   

var validhtml3 = '<table><tr><td><form action="" method="post"><table><tr><td></td></tr></table></form></td></tr></table>';   

var validhtml4 = '<tr><td><form action="" method="post"><table><tr><td></td></tr></table>  </form></td></tr>';   

var form = $("form", validhtml); 
form = $("form", validhtml2); 
form = $("form", validhtml3); 
form = $("form", validhtml4); 
form = $("form", invalidhtml); // crash here in ie, proper browsers fail silently 
1

私はjQueryのオブジェクトを期待しているときに、文字列で渡しているsomehtmlのあなたの命名によって推測すると思います。

+0

文字列を「ドキュメント」として渡すことができます。 "$(" div "、xml.responseXML);"たとえば、api.jquery.com/jQueryを参考にしてください。 – cedd