基于以下标记,我将如何(在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>
答案 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" />');