7

私はこのコードを持っています

var opt = $("select option:first");
opt.remove();

$("button").on("click", function() {
    $("select").prepend(opt).val(1);
});

これは一部のブラウザでは正常に機能します。しかし、もちろん、IEはその1つではありません。IEでは、コンボは2つのオプションで終了しますが、テキストは空白になります(選択されたオプションはありません)。これは、オプションがまだDOMにロードされていないためだと思います。代わりにこのコードを使用してこの問題を簡単に修正できるため、私は推測します。

var opt = $("select option:first");
opt.remove();

$("button").on("click", function() {
    $("select").prepend(opt);
    setTimeout(function() {
        $("select").val(1);
    }, 1);
});

しかし、私はもっと良いものを好みます。何か案は?

注:セレクターなどのパフォーマンスは求めていません。投稿されたコードは単なる縮小例であり、私の実際のスクリプトではありません。

4

3 に答える 3

3

元のコードが IE で失敗した理由はわかりませんが、これはすべてのブラウザーで機能するようです。

var opt = $("select option:first");
opt.detach();

$("button").on("click", function() {
    $("select").prepend(opt).prop("selectedIndex", 0);
});

http://jsfiddle.net/tEUxg/5/

于 2012-12-11T14:31:59.997 に答える
2

DOM 操作にキュー システムを使用する IE。使用dequeue(): デモ

var opt = $("select option:first");
opt.remove();

$("button").on("click", function() {
    $("select").prepend(opt).dequeue().val(1)
});
于 2012-12-11T14:50:43.680 に答える