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 回答