jQuery选择#id,其中word为前缀,counter为后缀

有没有办法用jQuery选择所有id的前缀为“my”和后缀“0-9”。 像这些$(“#my $ 1-4”)或者只是循环可能吗?

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

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

JS小提琴演示 。

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

参考文献:

  • attribute-starts-with选择器 。
  • filter()
  • Mozilla开发者网络上的正则表达式 。

使用属性starts-with selector可以轻松实现前缀部分:

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

但是没有选择器允许您指定一系列字符,因此必须涉及循环。 我建议filter

 $("div").filter(function () { return /^my\d$/.test(this.id); }); 

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

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

这会抓取所有id为“my”的元素,包含一个数字,并且只有3个字符长(所以“my54”不匹配但“my6”会匹配)