2010-08-23 19 views
12

muszę wydobyć coś z atrybutu „style”: „z góry” i „lewy” atrybutjQuery się z atrybutu stylu

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

Jaki jest najlepszy sposób to zrobić z jQuery? Czy istnieje prosty sposób, czy też będę musiał korzystać z funkcji ciągów?

Odpowiedz

31

To zależy od tego, co trzeba. Jeśli potrzebujesz wartości obliczonej - np. wartość rzeczywista przeglądarka stosowany po parsowania wszystkie arkusze stylów - użyj

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

Jeżeli jest to wartość pikseli, który jest zawsze będzie jedna określona we właściwości style - chyba która została zastąpiona przez !important oświadczenie w arkuszu stylów.

jQuery docs for .css()

Jeśli wyraźnie potrzebują wartości określonej w elemencie za style własności, należy

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

przeciwieństwie .css(), wartości te będą puste, jeżeli nie zostały one określone w nieruchomości style.

(przy użyciu identyfikatora element_1, nie można mieć identyfikator nazwany 1)

+0

Wystarczy aby upewnić się: Czy dostęp do właściwości poprzez obiekt stylu elementu * również * zwróci obliczoną wartość? – Tomalak

+0

@ Tomalak nie, 'styl' podaje wartość jawnie określoną w' style = '. –

1

właściwości CSS są dostępne za pośrednictwem standardowych właściwości DOM:

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

Tak na marginesie, "1" nie jest ważny element HTML ID.

4

Można użyć CSS funkcję:

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

użyciu .css() zwróci liczbę całkowitą + px, ale można łatwo dostać ładne czyste całkowitą robiąc to:

var yourVar = parseInt($('selector').css('top'), 10); 
Powiązane problemy