2012-03-19 24 views

risposta

18

Si potrebbe utilizzare filter()

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

Non è possibile utilizzare l'attributo è uguale selettore a causa perché questo selettore avrebbe elementi con una chiamata posizione di attributo che è uguale assoluto come questo

<div position="absolute"> 

ma nel cercare il vostro la posizione del caso è una proprietà css

+0

Umm, onestamente, avrei era più interessato a sapere se c'è qualcosa di sbagliato nella mia sintassi, oltre a filtrare l'uso esplicitamente ... –

+0

@VitoDeTullio ho aggiornato la mia risposta, la posizione è una proprietà CSS, non un attributo –

+0

corteggia, sono stupido> _ < –

0

Prova questo:

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

Demo: http://jsfiddle.net/XRRbr/1/

Maggiori informazioni: http://api.jquery.com/attribute-contains-selector/

+1

Bello, ma questo presuppone che lo stile sia in linea. http://jsfiddle.net/MGv9X/ –

+0

Questo può essere possibile ma il codice sarebbe complicato. Se la risposta accettata ha funzionato per te allora quella deve essere la risposta valida. 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

Sulla risposta di Nicola, è anche possibile 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'; 
    } 
}); 

Quindi puoi fare cose come questa.

$ (': absolute');

$ ('div.sidebar: relative');

Problemi correlati