0

たとえば、html に select/option/dropdown ボックスがあるとします。1) 配列サイズが 5000 の場合、jQuery では 2) よりも高速です。

1) 最初に文字列を作成します:

var str = '';
for (var i = 0; i<an_array.length; i++) {
  str +='<option value="' + an_array[i] + '">' + an_array[i] + '</option>';
}
jQuery("#my_select").append(str);

2) 毎回追加:

for (var i = 0; i<an_array.length; i++) {
  jQuery("#my_select").append(
    jQuery('<option></option>').val(an_array[i]).html(an_array[i])
  );
}

私の質問は次のとおりです。jQueryまたはjqGridには、最初にキャッシュ文字列を作成し、完了したらすべてをhtmlに投稿するような機能がありますか? それとも、すでに jqGrid でこの方法を使用していますか? 私がこの質問をしている理由は、500 を超える列があると jqGrid が本当に遅いように見えるからです。これは C と同じです。fprintf を実行するたびにファイルに自動フラッシュすることも、完了時に手動でフラッシュすることもできます。

前もって感謝します。

4

1 に答える 1

0

jQuery のドキュメントで、同じ DOM コンテンツを複数回繰り返す場合は常にキャッシュされたオブジェクトを使用する必要があると何度か述べているのを見てきました。これは、毎回 DOM をウォークするのにより多くの処理能力が必要になるためです。

私はあなたのソリューションを次のようにコーディングします:-

HTML

<select id="my_select"/>

JavaScript/jQuery

//an array to use for demonstration
var arr = ["one", "two", "three", "four", "five"];

var $frag = $();
$.each(arr, function () {
    $frag = $frag.add($("<option/>").val(this).text(this));
});
$("#my_select").append($frag);

行var $frag = $();に注意してください。. $()は空の jQuery オブジェクトを作成します。変数名 $frag の前に$付け、テキスト文字列ではなく jQuery オブジェクトであることを思い出させました。

あなたの質問に満足のいく答えが得られることを願っています。

よろしく、 アラン

于 2012-08-18T09:34:29.627 に答える