我正在回复此答案中的评论,因为它会更长并且包含代码,但它很可能不会成为答案。
浏览器很有可能不会索引该name
属性,因此它每次都必须遍历文档中的每个元素以找到匹配的名称。如果您将搜索限制在表单中,您可能会获得更好的性能。例子:
var form = $("#form_id");
for(var poleName in poleVstupu)
{
form.find('[name='+poleName+']').val(poleVstupu[poleName]).change();
}
(部分)非 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,例如,因为您有重复项,请使用data-
属性。
<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]);
}
});
(但后者不会很快)。