JSFiddle - React, Tailwind, and code Playground
by Osman Salihovic
HTML
<select id="test">
<option value='xxx'> xXx </option>
<optgroup label="Letters">
<option value='a'> A </option>
<option value='b'> B </option>
<option value='c'> C </option>
<option value='d'> D </option>
</optgroup>
<optgroup label="Letters2">
<option value='a1'> 1 </option>
<option value='a2'> 2 </option>
</optgroup>
<option value='zzz'> zZz </option>
</select>
JavaScript
$(document).ready(function () {
var mtest = "[";
var i = 0;
var j = 0;
$("select").children().each(function() {
if (i==0) i+=1; else mtest += ',';
j = 0;
if ($(this).children().length ==0) {
mtest += '{"' + $(this).attr('value') + '":"' + $.trim($(this).html()) + '"}';
} else {
mtest += '{"' + $(this).attr('label') + '":{';
$(this).children().each(function() {
if (j==0) j+=1; else mtest += ',';
mtest += '"' + $(this).attr('value') + '":"' + $.trim($(this).html()) + '"';
});
mtest += '}';
}
;})
mtest += ']';
document.write(mtest);
});