2

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 がオプションを取得できず、他のブラウザがそうする理由を誰かが教えてくれるでしょうか?

4

1 に答える 1

4

s htmlを取得しようとしている場合はoption、以下のように簡単に実行できます。

$(test).unwrap().html();

本文に追加してコンテンツを取得する代わりに。

http://jsfiddle.net/XYhbg/

上記は、テスト変数にあるデータを前提としています。何か違うか教えてください。

于 2012-12-03T20:23:04.477 に答える