1 回答
TA貢獻1848條經驗 獲得超10個贊
您可以遍歷level-0選擇中的每個選項,將它們的文本添加為標簽,將它們的同級level-1選項文本作為項目添加到對象中。然后你可以將這些對象推送到一個數組來生成你想要的結構:
let options = [];
$('.items option.level-0').each(function(_, el) {
let label = $(el).text();
let items = [];
el = $(el).next();
while (el.length && el.attr('class').split(/\s+/).includes('level-1')) {
items.push(el.text());
el = el.next();
}
options.push({
label,
items
});
});
console.log(options);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="items">
<option value="0" selected="selected">All Types Of Staff</option>
<option class="level-0 main-option-1" value="12">Main Option 1</option>
<option class="level-1 sub-option-1" value="29">Sub Option 1</option>
<option class="level-1 sub-option-2" value="30">Sub Option 2</option>
<option class="level-0 main-option-2" value="11" selected="selected">Main Option 2</option>
<option class="level-1 sub-option-1" value="28">Sub Option 1</option>
<option class="level-1 sub-option-2" value="25">Sub Option 2</option>
<option class="level-1 sub-option-3" value="26">Sub Option 3</option>
<option class="level-1 sub-option-4" value="27">Sub Option 4</option>
<option class="level-0 main-option-3" value="10">Main Option 3</option>
<option class="level-1 sub-option-1" value="22">Sub Option 1</option>
<option class="level-1 sub-option-2" value="23">Sub Option 2</option>
</select>
添加回答
舉報
