2010-08-23 11 views
12

necesito para extraer algo del atributo "estilo": el "top" y el atributo "izquierda"jQuery obtener atributo de moda

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

Cuál es la mejor manera de hacer esto con jQuery? ¿Hay una manera fácil, o tendré que recurrir a las funciones de cadena?

Respuesta

31

depende de lo que necesita. Si necesita el valor calculado, p. el valor real del navegador utilizado después de analizar todas las hojas de estilo - el uso

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

Si se trata de un valor de píxeles, que siempre va a ser el que se especifica en la propiedad style - menos que fue anulado por un !important declaración en una hoja de estilo.

jQuery docs for .css()

Si explícitamente necesita el valor especificado en style la propiedad del elemento, utilice

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

a diferencia de .css(), estos valores se vacía si no se especifica en la propiedad style.

(Uso de la identificación element_1, no se puede tener un ID de llamada 1)

+0

Justo para asegurarse: ¿accederá a las propiedades a través del elemento de estilo del elemento * también * devolverá el valor calculado? – Tomalak

+0

@Tomalak no, 'style' le dará el valor explícitamente especificado en' style = 'solamente. –

1

propiedades CSS son accesibles a través de las propiedades DOM estándar:

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

Como acotación al margen, "1" no es un elemento HTML válido CARNÉ DE IDENTIDAD.

4

Usted puede utilizar la función 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() devolverá un entero + px, pero se puede conseguir fácilmente un buen número entero limpio al hacer esto:

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