AJAX リクエストの後、次のような HTML データを含む文字列を取得します。
var test = '<div id="test-options"><option value="">Select</option><option value="true@153237119">XS</option><option value="true@153237120">S</option><option value="true@153237121">M</option><option value="true@153237122">L</option><option value="true@153237123">XL</option><option value="true@153237124">XXL</option></div><div class="athoerstuff">Ather stuff here</div>';
これを追加したいのですが、追加した後、ラッパーなしで div のコンテンツのみを取得します:
var li = $(test).appendTo('form');
$("body").find('#test-options').html();
-------------------------------
オプションがラッパーを持たないため、問題はIE9でのみ発生していました。IE9 は div 内のオプションを見ていて、これが無効であることに気付きました。そのため、IE9 にはオプションがありませんでした。
リクエストを行っていたサーバー側スクリプト (オプション値) に select ラッパーを追加し、代わりに:
$('#test-options').html();
追加した:
$('#test-options select').html();
結果は以前のコードと同じでしたが、IE9 でも動作するようになりました。
ご協力ありがとうございました。
select ラッパーがないと IE9 がオプションを取得できず、他のブラウザがそうする理由を誰かが教えてくれるでしょうか?