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
  • 34,866
  • 14
  • 107
  • 142
Gennady Shumakher
  • 5,637
  • 12
  • 40
  • 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
  • 214,931
  • 59
  • 362
  • 292
tvanfosson
  • 524,688
  • 99
  • 697
  • 795
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
  • 37,618
  • 14
  • 135
  • 121
2

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

Nakilon
  • 34,866
  • 14
  • 107
  • 142
Seb
  • 24,920
  • 5
  • 67
  • 85
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
  • 7,931
  • 11
  • 67
  • 103
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
  • 14,438
  • 7
  • 79
  • 77