Jquery选择以'Urgent-'开头的所有选项

时间:2012-05-18 13:48:09

标签: jquery

基于以下标记,我将如何(在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> 

1 个答案:

答案 0 :(得分:5)

您可以使用filter方法和regular expressions

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

DEMO: 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" />');​

DEMO: http://jsfiddle.net/th83R/3/