2

以下のマークアップに基づいて、(JQuery で) または で始まるオプションをどのように選択しますUrgent-Urgent -?

<select name="List1" id="list1">
<option>One</option>
<option>Two</option>
<option>urgent-Three</option>
<option>Urgent-Four</option>
<option>Urgent - Five</option>
</select> 

以下の回答に基づいて、次の JQuery を使用して、一致した要素を<optgroup>.

$opts = $("#list1 > option").filter(function() {
    return /^Urgent\s?-/.test(this.innerHTML);
});

$opts.wrapAll('<optgroup label="Urgent">'); 

一致したテキストをオプション テキストから削除する必要があるため、次のようなマークアップになります。

    <select name="List1" id="list1">
    <option>One</option>
    <option>Two</option>
    <optgroup label="Urgent">
    <option>Three</option>
    <option>Four</option>
    <option>Five</option>
    </optgroup>
    </select> 
4

1 に答える 1

5

filterメソッドと正規表現を使用できます。

$("#list1 > option").filter(function() {
    return /^Urgent\s?-/.test(this.innerHTML);
});

デモ: http://jsfiddle.net/th83R/


アップデート。更新された質問に従うには、コードを少し変更する必要があります。

$("#list1 > option").filter(function() {
    var newVal = this.innerHTML.replace(/^urgent\s?-\s?/i, "");
    if (newVal != this.innerHTML) {
        this.innerHTML = newVal;
        return true;
    }
    return false;
}).wrapAll('<optgroup label="Urgent" />');​

デモ: http://jsfiddle.net/th83R/3/

于 2012-05-18T13:50:55.710 に答える