0

getJson 呼び出しから選択リストを作成しています。

Firefox / chrome では、選択リストは非常に迅速に生成されますが、ie (ie8 でテスト済み) では、オプションの作成に数秒かかります。

選択リストには約 2000 のオプションが追加されています

私のコードは以下です

function getPractitioners(practID, selectID) {
    selectID = '#' + selectID;
    $.getJSON("/practitioner/getPractitioners", { practID: practID }, function (fooList) {
        $(selectID).empty();
        $.each(fooList, function (i, foo) {
            if (foo.profID == practID) {
                $(selectID).append(('<option value=\'' + foo.profID + '\' selected=\'selected\'>' + foo.display + '</option>'));
                }
            else
            {
                $(selectID).append(('<option value=\'' + foo.profID + '\' >' + foo.display + '</option>'));
            }
        });
        $(selectID).trigger("liszt:updated");
    });
}

これを改善するために何か提案できる人はいますか?

以前は次のようなオプションを追加していました

$(selectID).append(("<option></option>").attr("value", foo.profID).attr("selected", "selected").text(foo.display));

しかし、これを変更してもパフォーマンスは向上しませんでした。

前もって感謝します。

4

3 に答える 3

0

同じ問題があります。すべてのオプションを追加した後、選択した属性を操作することでパフォーマンスを向上させます。

//slow --- append selected value in each apppend.
$.each(fooList, function (i, foo) {
    $(selectID).append(('<option value="XXX" selected>yyyy</option>'));
});

//fast --- manipulating selected attribute after append to DOM
$.each(fooList, function (i, foo) {
    $(selectID).append(('<option value="XXX">yyyy</option>'));
});
$(selectID).find("option").attr("selected", "selected");

しかし、この回避策がうまく機能する理由がわかりません。

于 2013-11-02T02:06:59.377 に答える
0

This plugin https://github.com/harvesthq/chosen/pull/1339 resloves the exact issue that I have been having with the chosen plugin.

于 2013-10-03T12:30:33.750 に答える