Reputation: 3850
[{
"subclass": "Class 1",
"SubClass": [{
"subclass": "Class 1",
"subid": "1",
"price": "1.6625"
}, {
"subclass": "Class 1",
"subid": "2",
"price": "1.575"
}]
}, {
"subclass": "Class 2",
"SubClass": [{
"subclass": "Class 2",
"subid": "1",
"price": "3.0625"
}, {
"subclass": "Class 2",
"subid": "2",
"price": "2.8"
}, {
"subclass": "Class 2",
"subid": "3",
"price": "2.5375"
}, {
"subclass": "Class 2",
"subid": "4",
"price": "2.275"
}]
}]
for (var i = 0; i < data.length; i++) {
var SubClass = data[i].SubClass;
for (var j = 0; j < SubClass.length; j++) {
$(selectid).append('<option id=' + SubClass[j].subid + ' value="' + SubClass[j].subid + '">' + SubClass[j].subid + '</option>');
}
$(selectclass).append('<option id=' + data[i].subid + ' value="' + data[i].subclass + '">' + data[i].subclass + '</option>');
}
I have this array above and i want to put the subclass
value of the array into one select and the subid
in the next select. My problem is i want to show only the subid
that is available for each subclass
currently in my code it is showing all subid
UPDATE
Here is a fiddle what i expect here is for Class 1
the id is only 1 and 2
for Class 2
the id is 1 , 2 , 3 , and 4
Upvotes: 0
Views: 53
Reputation: 388316
You need to use a change event handler
var selectclass = $('#selectclass');
selectclass.empty();
var selectid = $('#selectid');
selectid.empty();
$.each(data, function (i, item) {
$('<option id=' + item.subid + ' value="' + item.subclass + '">' + item.subclass + '</option>').appendTo(selectclass).data('item', item);
});
selectclass.on('change.selectid', function () {
var item = $(this).find('option:selected').data('item');
selectid.empty();
$.each(item.SubClass, function (i, sub) {
$('<option id=' + sub.subid + ' value="' + sub.subid + '">' + sub.subid + '</option>').appendTo(selectid);
});
}).trigger('change.selectid');
Demo: Fiddle
Upvotes: 1