我有一个字段,当我在其中粘贴一些内容时,内容会被验证并逐行添加到另一个隐藏字段。我的内容可以是由换行符分隔的多个手机号码,当您将它们粘贴到可见字段时,每行都会得到验证并添加到另一个隐藏字段,该隐藏字段用于将值传递到后端。
例如
12345
54321
34567
我用来将值添加到隐藏字段的方式可以在下面的代码中看到:
$('#recipients').val($('#recipients').val().length <= 0 ? output.join("\n") : $('#recipients').val() + "\n" + output.join("\n"));
在上面的代码中,“输出”是用户粘贴内容中的一行(数字),收件人是隐藏字段。
该行被调用的次数与我的内容行的次数一样多。但是,当我检查性能时,该行会占用大量 CPU 负载(当行数太高时),并会在执行工作时产生延迟(浏览器挂起)。
那么这行代码能否以更高效的方式重写呢?
谢谢
最佳答案
以下是如何将选择器的结果缓存在变量中:
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
不会影响性能,它只是让代码更容易理解。
关于javascript - jQuery 代码性能改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19307819/