2011-01-10 14 views
11

Podczas pracy nad suwakiem zakresu jQuery UI głównie debugowałem w chrome. Musiałem zrobić zasięg mają limit więc chciałbym chwycić lewą pozycję jednego z uchwytów tak:jQuery różnic pozycjonowania między Chrome (Webkit) i Firefox

$el.css('left');

co dałoby mi lewym położeniu się w procentach 84%. Jednak gdy testowałem w Firefoksie, zwracał on wartość w pikselach.

Czy ktoś wcześniej tego doświadczył? Opierając się na DOM w Firebug, Firefox rozpoznaje pozycjonowanie oparte na procentach, ale wydaje się, że nie zwraca tego jako wartość. Czy to domyślne zachowanie dla przeglądarki Firefox? Czy to samo dotyczy IE?

+0

Dobre pytanie. Zaskoczyło mnie ostatnio znalezienie css ('left') zwracających piksele w Firefoksie, gdy właściwość została określona jako procent (lub ems). W końcu zawsze możesz uzyskać wartość piksela za pomocą position(). Left. Nie sprawdziłem jednak w Chrome. – harpo

+0

Tak, byłem zaskoczony, gdy jeden z elementów po prostu wystrzelił z ekranu, kiedy myślałem, że w zasadzie wykonałem tę funkcję. Pracując na MBP bez VMWare lub podobnym, tak naprawdę nie mogę teraz przetestować IE. – hellatan

+0

To nie odpowiada na twoje pytanie, ale rozwiązaniem opartym na jQuery jest użycie 'position' (http://api.jquery.com/position/), która zwraca tę samą wartość (w pikselach) w każdej przeglądarce. – Emmett

Odpowiedz

0

Nie sądzę, że istnieją jakiekolwiek znane różnice dotyczące pozycjonowania z jQuery od najnowszej wersji 1.4.4.

1

Funkcja css() zwraca wartość określonej właściwości css, zgłoszone przez przeglądarkę. W rezultacie jest to specyficzne dla przeglądarki i nie powinno być używane w taki sposób, jeśli chodzi o długość i pozycjonowanie.

+0

Zgadzam się, funkcja css() pozwala ci manipulować lub odczytać właściwości css i są (niestety) interpretowane inaczej w zależności od przeglądarki. Użyj funkcji position(), jeśli potrzebujesz niezależnych od przeglądarki liczb i wyników. – Ivanhoe

0

użycie $el.position().left; zamiast :)

+0

To może zwrócić ten sam wynik, jeśli nie masz szczęścia. (w tej chwili dla mnie) – Sascha

0

ja obejść ten problem poprzez dostęp DOM bezpośrednio w następujący sposób:

$el.get(0).style.left

zwraca wartość% dla FF, Chrome, Safari i IE9. (Nie testowałem tego jednak w Operze)

Powiązane problemy