我對這個答案中的評論作出了迴應,因爲它會更長幷包含代碼,但它很可能不會成爲答案。
有一個很好的機會,瀏覽器不會索引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