ラジオ ボタンを使用してページのレイアウトを制御したいと考えています。ボタンは次のようになります。
<form>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='one'>
One
</label>
<label>
<input type="radio" name="layout" class='layout-controls' data-type='layout' data-value='two'>
Two
</label>
</form>
そして、私は次のような関数をバインドしています:
$('.layout-controls').on('click', function(event) {
var $btn;
$btn = $(event.target);
return doStuff($btn.data('type'), $btn.data('value'));
});
これはすべてうまくいきます。
次に、イベント ハンドラーがバインドされた後、ページの上部に要素を追加しようとしています。
$("#message-area").html("<div><br><br><p>Please make a selection </p></div>")
これにより、ラジオ ボタンがクリックできなくなります。いくつかの観察:
- Visual Eventのようなツールは、各ラジオ ボタンで正しいイベント ハンドラーを認識し、それらをトリガーすることができます。
- HTML タグが追加される
message-area
ほど、下のラジオ ボタンがクリックできなくなります。 - これらの要素を挿入することは、ページの下に何かを「迂回」しているように感じます
- JQueryを使用して要素を挿入するのではなく、試し
getElementById
てinnerHTML
みましたが、違いはないようです
ここで何が起こっているのか、何か光を当てることができますか? イベント ハンドラーがバインドされた後、ページのさらに上に HTML を挿入できるようにする必要がありますか? これを行うための安全で堅牢な方法は何ですか?
編集
そのため、テキストの挿入によって、不正で目に見えない SVG キャンバスがラジオ ボタンの上に配置されていたことがわかりました ( JSFiddleを参照)。これを見つけたのは、ページに多くの要素があるために時間がかかったマークアップで見つけたからです。それを見つけたので、明らかに修正できますが、これを表示したり、デバッグに役立つツールはあるのでしょうか?