我对这个答案中的评论作出了回应,因为它会更长并包含代码,但它很可能不会成为答案。
有一个很好的机会,浏览器不会索引name
属性,因此它必须通过文档中的每个时间找到匹配的名称每一个元素循环。如果您将搜索范围限制在表单中,您可能会获得更好的性能。例如:
var form = $("#form_id");
for(var poleName in poleVstupu)
{
form.find('[name='+poleName+']').val(poleVstupu[poleName]).change();
}
A(局部的)非jQuery的解决方案可以是直接从DOM访问形式的元件。例如:
var form = $("#form_id")[0]; // Get the DOM reference of the form
for(var poleName in poleVstupu)
{
jQuery(form.elements[poleName]).val(poleVstupu[poleName]).change();
}
它也可以帮助你遍历所有的表单元素,而不是对象。例如:
var form = $("#form_id")[0]; // Get the DOM reference of the form
for (var i = 0, len = form.elements.length; i < len; i++)
{
var element = form.elements[i];
if (typeof poleVstupu[element.name] !== "undefined")
jQuery(element).val(poleVstupu[element.name]).change();
}
与每一个版本的jQuery增加性能。你不能使用1.10.x甚至2.x?
如果您遗漏了.change()
,性能如何?
编辑:
在非表单元素name
是无效的,所以你不应该使用。我使用的ID和设置一个类上,你需要做的所有元素:
$(".change-html").each(function() {
if (typeof poleVstupu[this.id] !== "undefined") {
$(this).html(poleVstupu[element.name]);
}
});
或者,如果你不能使用id,为eaxmple,因为你有重复,使用data-
attribute。
<p data-change-html="your_name"></p>
$("[data-change-html]").each(function() {
var element = $(this);
var name = element.data("change-html");
if (typeof poleVstupu[name] !== "undefined") {
element.html(poleVstupu[name]);
}
});
(但后者不会非常快速mostlikey)。
按名称选择并不是非常理想。这可能有助于将搜索限制在诸如表单等周围元素。或者使用ID代替。你使用的是当前版本的jQuery?你的对象/表单有多少项? – RoToRa
什么几乎可以帮助,将不会使用jQuery。 – RoToRa
最后:你有一个改变事件处理程序,它有什么作用? – RoToRa