views:

275

answers:

3

Using jQuery, how would you find elements which have a particular style (eg: float: left), regardless of whether it's an inline style or one defined in a CSS file?

+14  A: 

Using the filter function:

$('*').filter(function() {
     return $(this).css('float') == 'left';
});

Replace '*' with the appropriate selectors for your case.

Eran Galperin
Much better solution than mine I think.
Genericrich
Yeah, +1 good answer, but for sanitys and speeds sake one may want to reduce the search field to something less than '*'
Kent Fredric
Of course he should pass the selectors relevant for him :)
Eran Galperin
A: 

Well, I don't know if I would approach this this way. Why not just rename those elements with a consistent ID or class name, and select that?

If that's not an option, this should work:

this.getElementsByTagName('div').item(0).style.float = 'left';

I think.

Genericrich
This will not work. Your code selects all divs, reduces selection to the first div, then sets its float to left.
yaauie
+1  A: 

This is gonna be slow. Like REALLY slow. If you know you need to select all elements with a given CSS style, you will see much better performance by applying a single additional css rule to each element, and then selecting by that rule.

It's going to be MUCH faster and more readable to boot.

CSS:

.float-left {float:left}

Javascript:

$('.float-left');
Triptych