0

フィールドがあり、それにコンテンツを貼り付けると、コンテンツが検証され、行ごとに別の非表示フィールドに追加されます。私のコンテンツは、新しい行で区切られた携帯電話番号の数である可能性があり、それらを表示フィールドに貼り付けると、各行が検証され、値をバックエンドに渡すために使用される別の非表示フィールドに追加されます。

例えば

12345
54321
34567

非表示フィールドに値を追加するために使用する方法は、次のコードで確認できます。

$('#recipients').val($('#recipients').val().length <= 0 ? output.join("\n") : $('#recipients').val() + "\n" + output.join("\n"));

上記のコードでは、「出力」はユーザーが貼り付けたコンテンツの行 (数字) であり、受信者は隠しフィールドです。

この行は、コンテンツ行と同じ数だけ呼び出されます。しかし、パフォーマンスを確認すると、この行は CPU に多くの負荷をかけ (行数が多すぎる場合)、ジョブの実行に遅れが生じます (ブラウザーがハングします)。

では、このコード行をより効率的な方法で書き直すことができるでしょうか?

ありがとう、

4

1 に答える 1

2

セレクターの結果を変数にキャッシュする方法は次のとおりです。

var $recip = $("#recipients");
var $recipval = $recip.val();
var new_out = output.join("\n");
$recip.val($recipval.length == 0 ? new_out : $recipval + "\n" + new_out);

もう少しブーストを得るために、jQuery をバイパスすることもできます。

var recip = $("#recipients")[0];
var recipval = recip.value;
var new_out = output.join("\n");
recip.value = recipval.length == 0 ? new_out : recipval + "\n" + new_out;

new_outコードを理解しやすくするだけで、パフォーマンスには影響しません。

于 2013-10-10T23:22:03.783 に答える