tags:

views:

5456

answers:

3

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?

Thanks.

+5  A: 

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.

tvanfosson
The @ symbol was from the original XPath type selector, IIRC
alex
+1  A: 

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.

Koistya Navin
+1  A: 

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

Seb