2012-03-19 17 views

Respuesta

18

Usted podría utilizar filter()

$('*').filter(function(){ 
    var position = $(this).css('position'); 
    return position === 'absolute'; 
}); 

No se puede utilizar el atributo es igual selector porque debido a que el selector sería buscar elementos con un atributo que se llama posición absoluta es igual a como esta

<div position="absolute"> 

pero en su case position is a css property

+0

Umm, onestly, yo estaba más interesado en saber si hay algo malo en mi sintaxis, que de forma explícita el uso del filtro ... –

+0

@VitoDeTullio He actualizado mi respuesta, la posición es una propiedad CSS, no un atributo –

+0

wooops, soy tonto> _ < –

0

Pruebe esto:

$("*[style*='position:absolute']").each (function() { 
    alert($(this).html()); 
}); 

Demostración: http://jsfiddle.net/XRRbr/1/

Más información: http://api.jquery.com/attribute-contains-selector/

+1

Bueno, pero eso supone que el estilo está en línea. http://jsfiddle.net/MGv9X/ –

+0

Eso puede ser posible, pero el código sería complicado. Si la respuesta aceptada ha funcionado para usted, entonces esa debe ser la respuesta válida. JFYI, https://developer.mozilla.org/en/DOM/window.getComputedStyle http://stackoverflow.com/questions/754607/can-jquery-get-all-css-styles-associated- con un elemento – codef0rmer

10

Sobre la base de la respuesta de Nicola, también puede extend jQuery's selector engine.

$.extend($.expr[':'],{ 
    absolute: function(el) { 
     return $(el).css('position') === 'absolute'; 
    }, 
    relative: function (el) { 
     return $(el).css('position') === 'relative'; 
    }, 
    static: function (el) { 
     return $(el).css('position') === 'static'; 
    }, 
    fixed: function (el) { 
     return $(el).css('position') === 'fixed'; 
    } 
}); 

Entonces usted puede hacer cosas como esta.

$ (': absolute');

$ ('div.sidebar: relative');

Cuestiones relacionadas