61

I am trying to find a span element who has an id in a particular pattern. Its main use is to find certain elements rendered by an asp.net (aspx) page which is derived from a master page.

deostroll
  • 11,661
  • 21
  • 90
  • 161

3 Answers3

176

Building on the accepted answer:

It depends on what kind of pattern you're looking for. If your pattern is something like "MasterPageElement_CheckBox_4443", "MasterPageElement_CheckBox_4448", etc. then you could also use:

$("span[id^=MasterPageElement_CheckBox]")

There are 3 built-in attribute selectors for simple patterns:

$("span[id^=foo]")

That selector matches all spans that have an id attribute and it starts with foo (e.g. fooblah)

$("span[id$=foo]")

That selector matches all spans that have an id attribute and it ends with foo (e.g. blahfoo).

$("span[id*=foo]")

That selector matches all spans that have an id attribute and it has foo somewhere within in it (e.g. blahfooblah).

cdmckay
  • 31,832
  • 25
  • 83
  • 114
  • Links: [*= pattern](https://api.jquery.com/attribute-contains-selector/), [$= pattern](https://api.jquery.com/attribute-ends-with-selector/) and [^= pattern](https://api.jquery.com/attribute-starts-with-selector/) – Francisco Quintero Feb 19 '19 at 00:50
37
$('span').each(function(){
   if( $(this).attr('id').match(/pattern/) ) {
        // your code goes here
   }
});

problem solved.

gsamaras
  • 71,951
  • 46
  • 188
  • 305
xxxxxxx
  • 5,037
  • 6
  • 28
  • 26
6

I know this is an old post, but additional information can help future developers who stumble across this. :) To add on to what @cdmckay mentioned, you can combine the attribute selectors to achieve "begins with X and ends with Y".

$("input[id^=inp][id$=_AddItem]")

This will match id "inp1_AddItem", "inp2_AddItem", "inp3_AddItem", etc.

Lee
  • 454
  • 5
  • 9