10

有没有办法用 jQuery 选择所有带有前缀“my”和后缀“0-9”的 id。像这些 $("#my$1-4") 之类的东西,还是可以通过循环来实现?

    <div id="my1"/>
    <div id="my2"/>
    <div id="my3"/>
    <div id="my4"/>
    <div id="my5"/>
4

3 回答 3

25

第一个想法,这似乎运作良好:

$('div[id^="my"]').filter(
    function(){
        return this.id.match(/\d+$/);
    });

JS 小提琴演示

上面选择所有以 value 开头的div元素,然后将返回的元素过滤为以数字字符结尾的元素。idmyid

参考:

于 2012-06-23T21:45:30.150 回答
3

前缀部分很容易通过属性开头选择器实现:

$("div[id^=my]");

但是没有选择器可以让您指定字符范围,因此必须涉及循环。我建议filter

$("div").filter(function () {
    return /^my\d$/.test(this.id);
});
于 2012-06-23T21:45:08.647 回答
1

假设您没有以“my”开头的数百万个元素,您可以这样做:

$('[id^=my]').filter(function() { return this.id.matches(/\d/) && this.id.length == 3 })

这会抓取所有具有以“my”开头的 id、包含数字且只有 3 个字符长的元素(因此“my54”将不匹配,但“my6”将匹配)

于 2012-06-23T21:45:31.687 回答