Reputation: 34934
Given this:
var formItems = [
$("div.class1.class2:visible:eq(0) div.class3 input:eq(0)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(1)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(2)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(3)"),
];
If there any way to simplify this:
var values = getValues(); // values.length is always equal to formItem.length
for (var i = 0; i < values.length; i++) {
if (someCondition()) {
$("div.class1.class2:visible:eq(0) div.class3 input:eq(0)").val(values[i].abc);
$("div.class1.class2:visible:eq(0) div.class3 input:eq(1)").val(values[i].cde);
$("div.class1.class2:visible:eq(0) div.class3 input:eq(2)").val(values[i].abcdf);
$("div.class1.class2:visible:eq(0) div.class3 input:eq(3)").val(values[i].zyz);
}
Upvotes: 0
Views: 52
Reputation: 2160
I'm not sure what you want but perhaps like this?
var items = [
{ input: "div.class1.class2:visible:eq(0) div.class3 input:eq(0)", value: "abc" },
{ input: "div.class1.class2:visible:eq(0) div.class3 input:eq(1)", value: "cde" },
{ input: "div.class1.class2:visible:eq(0) div.class3 input:eq(2)", value: "abcdf" },
{ input: "div.class1.class2:visible:eq(0) div.class3 input:eq(3)", value: "zyz" }
];
var values = getValues();
for (var i = 0; i < values.length; i++) {
if(this value is the right one) {
for(var j in items) {
$(item[j].input).val(values[i][items[j].value);
}
}
}
Edit 13:15
If this isn't what you mean by simplifying, you'll have to elaborate.
var formItems = [
$("div.class1.class2:visible:eq(0) div.class3 input:eq(0)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(1)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(2)"),
$("div.class1.class2:visible:eq(0) div.class3 input:eq(3)"),
];
var formValues = ["abc", "cde", "abcdf", "zyz"];
var values = getValues(); // values.length is always equal to formItem.length
for (var i = 0; i < values.length; i++) {
if(this value is the right one) {
for(var j in formItems) {
formItems[j].val(values[i][formValues[j]);
}
break;
}
}
Upvotes: 1