これについて何時間もウェブを検索してきましたが、説明や解決策が見つかりませんでした。誰かが私に提供できるかどうか見てみましょう...
私が抱えている問題は、「無効な」古い HTML がいくつかあり、現在、JQuery を介して他の div などを挿入して Web サイトを改良していることです。しかし、DOM を変更した後、一部の機能が機能しなくなりました。
例を挙げましょう。古い HTML は次のようなものです。
<table>
<form method="POST">
<tr>
<td><input type="text" value="test" /></td>
</tr>
<tr>
<td><input type="submit" value="SEND!" /></td>
</tr>
</form>
</table>
ご覧のとおり、実際には無効な<form>
の外側にネストされたがあります。<tr>
しかし、ブラウザによって正しく解釈され、機能しています。しかし、 JQueryを介して DOM を操作すると、ブラウザ (私の場合は Firefox) が間違っていることに気づき、ボタンが機能しなくなります。Firebug をチェックすると、次のようになります。
<table>
<form method="POST"></form>
<tr>
<td>...
したがって、タグsubmit
が「自動的に」閉じられ、ボタンが埋め込まれなくなったため、明らかにボタンは機能しなくなりました。<form>
submit
誰でもこの問題に光を当てることができますか? なぜこれが起こっているのか、またこれを防ぐために何ができるでしょうか (元の HTML を変更する以外に)。
どうもありがとう !!
編集:
「無効なマークアップ」という答えだけを得るのを避けるために、2 番目の例を示します。
<input type="text" id="something" value="" />
onLoad で読み込まれている Javascript 関数:
function setRequired() {
document.getElementById('something').setAttribute('aria-required', 'true');
}
オンロード後、Firebug でこれを確認でき、期待どおりに動作します。
<input type="text" id="something" value="" aria-required="true" />
しかし、その後に DOM 操作を追加すると、次のようになります。
<inputaria-required="true" type="text" value="" id="something"></inputaria-required="true">
EDIT2:
DOM の変更に関しては、ページの本文全体を<div>
タグの構造内にラップしているだけです。したがって、(簡略化して)次のようになります。
$('body').wrapInner('<div class="container">');
この問題の動作を確認するには、このページを確認してください(IE で動作するため、必ず Firefox で表示してください)。