我有一个HTML选择列表的jQuery引用。我需要迭代选项并检查选项的文本是否与正则表达式匹配,如果是,我想在该选项中添加cssclass。我该怎么做?
var ddl = $($get('<%= someddl.ClientID %>'));
我可以以某种方式利用.each()函数吗?
实施例
<select id="someddl">
<option value="21">[21] SomeData ***DATA***</option>
<option value="22">[22] SomeData ***DATA***</option>
<option value="23">[23] SomeData </option>
<option value="24">[24] SomeData </option>
<option value="25">[25] SomeData ***DATA***</option>
</select>
我想在此示例中为项目1,2,5添加一个CSS类。
在c#中,我的正则表达式是Regex expression = new Regex(@"\*\*\*");
,但我现在想通过javascript执行此操作,因此正则表达式可能看起来有点不同。
我能在这里做些什么来完成这项要求?
谢谢, 〜CK
答案 0 :(得分:1)
嗯,当然你可以利用$ .each(),就像那样:
$("#someddl option").each(function(i){
var val = $(this).html();
if(// regex)
{
$(this).addClass("myclass");
}
});
你必须自己做正则表达式,因为它在屁股上非常痛苦:P
答案 1 :(得分:1)
正如我在回答您的C#问题时写的那样,如果您想要匹配3个星号,则不需要正则表达式。请尝试以下方法:
$(document).ready(
function()
{
$('#someddl option:contains("***")').addClass('selected');
}
);
答案 2 :(得分:0)
这样的事情应该有效:
$('select[id=whatever] option').each(function() {
if (... your condition ...) {
$(this).addclass('cssClass');
}
});
答案 3 :(得分:0)
我会这样做
$(function()
{
$("#someddl option").each(function(i,elem)
{
if( /\*{3}/.test( elem.text) )
{
$(elem).addClass("myclass");
}
});
} );
只知道有一个非常有限的CSS子集,您可以实际应用于<option>
元素
答案 4 :(得分:0)
您正在寻找的是:
re = /[\*]{3}[^\*]{1,}[\*]{3}/
/[\*]{3}/ // match 3 *
/[^\*]{1,}/ // match atleast 1 non *
答案 5 :(得分:0)
如果你有正则表达式,有一篇文章解释如何扩展jquery以使用regexp。
http://blog.mastykarz.nl/jquery-regex-filter/
jQuery.extend(
jQuery.expr[':'], {
regex: function(a, i, m, r) {
var r = new RegExp(m[3], 'i');
return r.test(jQuery(a).text());
}
}
);
这将允许您在选择器中使用正则表达式,而不是循环选定的结果并匹配正则表达式。