27

I need to find and iterate through all child elements that have specific attribute. The following code worked fine in jquery 1.2.6, but throws exception in 1.3.2

$(parentElement).find('*[@someAttributeName]').each(function(index){
    doSomething(this);
});

What is the correct way to achieve that?

Nakilon
  • 33,683
  • 14
  • 104
  • 137
Gennady Shumakher
  • 5,577
  • 10
  • 39
  • 45

5 Answers5

40

Just get rid of the @, I believe.

$(parentElement).find('[someAttributeName]').each(function(index){
    doSomething(this);
});

From the jQuery selector docs:

Note: In jQuery 1.3 [@attr] style selectors were removed (they were previously deprecated in jQuery 1.2). Simply remove the '@' symbol from your selectors in order to make them work again.

Joseph Silber
  • 205,539
  • 55
  • 352
  • 286
tvanfosson
  • 509,016
  • 97
  • 693
  • 791
2

Note the "@" before the attribute name was deprecated as of version 1.2.

$(parentElement).find('*[someAttributeName]').each(function(index){
    doSomething(this);
});

Just remove it and you are good to go.

Konstantin Tarkus
  • 36,352
  • 14
  • 132
  • 118
2

[@attribute] notation is deprecated in jQuery 1.3. Remove the @ sign and you're good to go.

Nakilon
  • 33,683
  • 14
  • 104
  • 137
Seb
  • 24,494
  • 5
  • 63
  • 83
1

ithink this is the best way to find and can change something of it

   $('.youritem').each(function(){
                          if($(this).attr('title') == 'add image')
                                           $(this).attr('id','imageuploader');

                        });
Yuseferi
  • 6,789
  • 11
  • 58
  • 92
0

Doesn't work for me in IE when I want to find inputs with required="".

Works when I change to required="required". Maybe other combinations also work https://stackoverflow.com/a/3012975/588759

Community
  • 1
  • 1
rofrol
  • 13,168
  • 7
  • 73
  • 68