「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
"somehtml"とは何ですか? –
これは意味をなさないです、あなたのvar 'invalidhtml'は再利用されず、コンテンツ文字列にはクローズがありません。さらに、文字列のhtmlは無効です。 –
私はsomehtmlがinvalidhtmlであると仮定します。その場合、間違ったデータ型をコンテキストとして渡している点で@Cliveは正しいです。 – swatkins