Учитывайте следующее:
https://jsfiddle.net/Twisty/edon2utx/20/
HTML
<div class="widget">
<h1>Controlgroup</h1>
</div>
JavaScript
$(function() {
var myObj = [{
"javascript": [{
"product": "1234"
},
{
"product": "4321"
}
]
},
{
"python": [{
"product": "9876"
}]
}
];
function makeGroup(dObj, tObj, vert) {
var keys = Object.keys(dObj);
var fs = $("<fieldset>").appendTo(tObj);
var legend = $("<legend>").html(keys[0]).appendTo(fs);
var cg = $("<div>", {
class: "controlgroup"
}).appendTo(fs);
$.each(dObj[keys[0]], function(k, v) {
$("<label>", {
for: "ticker-" + v.product
}).html(v.product).appendTo(cg);
$("<input>", {
type: "checkbox",
name: "insurance",
value: v.product,
id: "ticker-" + v.product
}).appendTo(cg);
});
if (vert == undefined) {
cg.controlgroup();
} else {
cg.controlgroup({
"direction": "vertical"
});
}
}
$.each(myObj, function(i, g) {
makeGroup(g, $(".widget"));
});
});
С вашей скрипкой было много проблем. Сначала я их исправил.
Что касается итерации вашего объекта, есть много способов сделать это. Я построил функцию, которая строит одну группу, в основном по следующему шаблону:
<fieldset>
<legend>{Key}</legend>
<div class="controlgroup">
<label for="ticker-{Value}">{Value}/label>
<input type="checkbox" name="insurance" value="{Value}" id="ticker-{Value}">
</div>
</fieldset>
Вам нужен fieldset
для каждой группы, это становится контейнером для всех элементов управления в этой группе.
Если у вас был вертикальный элемент управления, вы можете использовать его так:
makeGroup({ php: [{ product: 9876 }] }, $(".widget"), true);
Последний параметр является необязательным. Пример: https://jsfiddle.net/Twisty/edon2utx/26/