3

以下は私のマークアップの例です

<select id = "select_test">
<option>aus - testa1</option>
<option>aus - testa2</option>
<option>aus - testa3</option>
<option>bris - testb1</option>
<option>bris - testb2</option>
<option>bris - testb3</option>
<option>melb - testc1</option>
<option>melb - testc2</option>
<option>melb - testc3</option>
</select>

jQuery を使用して、「 - 」の前のすべてから動的に optgroup を作成しようとしています。

私がなりたいものの例

<select id = "select_test">
<optgroup label = "aus">
<option>testa1</option>
<option>testa2</option>
<option>testa3</option>
</optgroup>
<optgroup label = "brisb">
<option>testb1</option>
<option>testb2</option>
<option>testb3</option>
</optgroup>
<optgroup label = "melb">
<option>testc1</option>
<option>testc2</option>
<option>testc3</option>
</optgroup>
</select>

どんな助けでも大歓迎です!!

4

1 に答える 1

7

各オプションをループして値を分割し、作成するグループ名を見つける必要があります。このようなもの:

var prevGroup, $group = $();
$('#select_test option').remove().each(function() {
    var $option = $(this),
        values = $option.text().split(' - '),
        group = values[0];

    if (group != prevGroup) {
        $group = $('<optgroup />', { label: group }).appendTo('#select_test');
    }

    $group.append($('<option />', {
        text: values[1],
        value: values[1]
    }));

    prevGroup = group;
});

フィドルの例

于 2013-10-02T08:06:02.663 に答える