我的其他程序员,我失去了我的想法。我关注了JS性能方面的许多书籍,并且他们都在说,最好是将DOM对象缓存以备将来参考和管理,而不是创建新的Jquery对象。这听起来很合理。 但现在我的信仰在颤抖。我试图在我的公司开发代码约定,我正想从一个性能角度来解决这个问题。 我有一段代码如下:原生Jquery选择器VS缓存object.find()
$("#registratorType").attr("readonly", "readonly");
$("#registratorType").attr("size", "25");
$("#id").attr("readonly", "readonly");
$("#id").attr("size", "25");
$("#serial").attr("readonly", "readonly");
$("#serial").attr("size", "25");
$("#duration").attr("size", "25");
$("#stoppingDuration").attr("size", "25");
$("#speeddata").removeAttr("disabled");
它不是整个事情,但我认为,你已经有了这个想法。我将获得所有这些表单并将其包装在缓存的参考中。
var $form = $('#vehicleProfile');
$form.find("#registratorType").attr("readonly", "readonly");
$form.find("#registratorType").attr("size", "25");
$form.find("#id").attr("readonly", "readonly");
$form.find("#id").attr("size", "25");
$form.find("#serial").attr("readonly", "readonly");
$form.find("#serial").attr("size", "25");
$form.find("#duration").attr("size", "25");
$form.find("#stoppingDuration").attr("size", "25");
$form.find("#speeddata").removeAttr("disabled");
我已经测试了最新的chrome中的性能,并且感到震惊!我的方法失败了3-4次。我的意思是我的功能运行在42毫秒,而老的是12-14毫秒。 对我的方法有没有真正的价值?我的方法是反模式吗?请帮帮我!
这不是“缓存参考”的含义。 – Bergi
我认为在'find()'中使用ID选择器是无用的,你应该做的就像var'$ registratorType = $('#registratorType'); [']' –
缓存_finds_ like'var registratorType = $(“#registratorType”);'然后使用'registratorType.attr()'作为'registratorType'变量是一个jQuery对象 – andyb