考虑以下HTML:
<div id="Kees_1_test">test 1</div>
<div id="Kees_12_test">test 2</div>
<div id="Kees_335_test">test 3</div>
我想要一个选择器来选择看起来像$('div[id=Kees_{any number}_test]')
的div。我怎样才能做到这一点?
注意:ID由Asp.Net生成。
答案 0 :(得分:13)
试试这个:
$('div[id^=Kees_][id$=_test]')
该选择器会选择所有包含以Kees_
开头且以_test
结尾的ID的元素。
正如lonesomeday建议的那样,您可以使用.filter()
来确保中间部分仅包含数字。您可以将.filter()
与上面的示例结合使用:
$('div[id^=Kees_][id$=_test]').filter(function() {
return /^Kees_\d+_test$/.test(this.id);
});
这应该和它一样好。请注意,我向正则表达式添加了^$
,这将在Kees_123_test_foo
等ID上返回false,但Kees_123_test
次传递。
答案 1 :(得分:7)
最好的解决方案是给所有div一个类并使用类选择器:
<div id="Kees_1_test" class="Kees_test">test 1</div>
<div id="Kees_12_test" class="Kees_test">test 2</div>
<div id="Kees_335_test" class="Kees_test">test 3</div>
选择器:
$('div.Kees_test');
如果无法做到这一点,最明确的方法是使用filter
:
$('div[id^="Kees_"]').filter(function() {
return /Kees_\d+_test/.test(this.id);
});
\d+
表示“选择一个或多个号码”。