[英]jQuery selector using regex (or something else)
我需要在代码中选择一个与类名中的字符串+数字匹配的属性,使用jQuery
我需要做的是匹配这样的东西:
var myVar = 'item';
$('#id [class="'+myVar+'\d+"]');
我的代码包含以“item”开头的其他类,所以我不能使用选择器class^="item"
我在互联网上发现了不同的东西,但没有任何东西完全符合我的要求。
我发现jQuery扩展名为“:regex”,但我不允许使用它。 http://james.padolsey.com/javascript/regex-selector-for-jquery/
我发现使用“过滤器”作为一个函数,但这对性能jQuery过滤器选择器来说太可怕了,这是对的吗?
我试图做一些事情,但它甚至没有工作:
$('#id *').filter(function() {
return this.className.match("/"+myVar+"\d/");
});
你有更好的建议吗?
谢谢。
不,你不能使用\\d
与CSS / jQuery选择器。
我建议你将数字分成另一个属性,如data-number
或其他东西。 通过这种方式,您可以轻松高效地定位课程,并且仍然可以使用该编号。
<span class="my-class" data-number="1"></span>
<span class="my-class" data-number="6"></span>
<span class="my-class" data-number="10"></span>
jQuery示例
$.each($('my-class'), function () {
$(this).attr('data-number');
});
正如@Asad所提到的,也可以使用$('.my-class[data-number="1"]')
。
怎么样:
$('#id [class*=' + myVar + ']').filter(function() {
return this.className.match(new RegExp('(^|\\s)' + myVar + '\\d+(\\s|$)'));
});
选择器使用类名中的myVar
选择#id
每个后代元素。 最后它过滤它们,只留下那些拥有myVar
后跟一个或多个数字作为其中一个类的名称的人。
注意:您可能知道这一点,但无论如何都值得警告:您必须阻止myVar
具有对选择器具有特殊含义的字符(这会弄乱[class*=' + myVar + ']'
选择器)和正则表达式 (例如作为字符串'[az]'
,这将使正则表达式匹配范围而不是文字'[az]'
- 在这种情况下,它应该被转义为'\\[az\\]'
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.