2010-08-23 9 views
12

ho bisogno di estrarre qualcosa fuori dell'attributo "stile": il "top" e l'attributo "sinistra"jQuery ottenere l'attributo di moda

<div style="top: 250px; left: 250px;" id="1" class="window ui-draggable"> 

Qual è il modo migliore di fare questo con jQuery? C'è un modo semplice, o dovrò ricorrere a funzioni stringa?

risposta

31

Dipende che cosa avete bisogno. Se hai bisogno del valore calcolato - ad es. il valore effettivo del browser utilizzato dopo l'analisi di tutti i fogli di stile - utilizzare

$("#element_1").css("top") 
$("#element_1").css("left") 

Se si tratta di un valore di pixel, che sta andando sempre essere quello specificato nella proprietà style-a meno che è stato sovrascritto da un !important dichiarazione in un foglio di stile.

jQuery docs for .css()

Se esplicitamente necessario il valore specificato nella proprietà dell'elemento style, utilizzare

$("#element_1")[0].style.top 
$("#element_1")[0].style.left 

differenza .css(), questi valori sarà vuota se non sono stati specificati nella proprietà style.

(Usando ID element_1, non si può avere un ID di nome 1)

+0

Proprio per essere sicuro: l'accesso alle proprietà attraverso l'oggetto di stile dell'elemento * anche * restituirà il valore calcolato? – Tomalak

+0

@Tomalak no, 'style' ti darà il valore esplicitamente specificato in' style = 'solo. –

1

proprietà CSS sono accessibili attraverso le proprietà DOM standard:

alert($("#theElement")[0].style.top) // "250px" 
alert($("#theElement")[0].style.left) // "250px" 

Per inciso, "1" non è un elemento HTML valida ID.

4

È possibile utilizzare la funzione CSS:

var topValue = $(this).css("top"); //Change the selector to meet your needs 
var leftValue = $(this).css("left"); //Change the selector to meet your needs 
1

usando css() restituirà un intero + px, ma si può facilmente ottenere un bel intero pulita in questo modo:

var yourVar = parseInt($('selector').css('top'), 10);