2012-06-07 14 views
12

Mam absolutnie pozycjonowany element, który poruszam przy pomocy jQuery przy użyciu CSS propertly "left".Styl jQuery nie jest stosowany w Safari

$("#element").css('left', '103px'); 

W przeglądarce Firefox działa zgodnie z oczekiwaniami. Jednak w Safari widzę styl pojawiający się w Web Inspector pod elementem.style, ale styl nie jest aktualizowany. Jeśli wyłączę (i ponownie włączę) dowolne dopasowane reguły CSS (nawet te, które nie zostały zastosowane bezpośrednio do mojego div), zostanie zastosowany styl zastosowany w jQuery.

Używam Safari 5.0.6 na starym PowerMacu z jQuery 1.7.2.

+0

Co powiecie na dodanie klasy z lewej: 103px; do ciebie CSS i robi $ ('emelent'). addClass ("lewa_klasa"); ? Czy to będzie różnica? – Robert

+0

Jeśli jest w CSS, działa, ale chcę móc przenieść element za pomocą jQuery, ale to nie działa. –

+0

Wyśledziłem problem z elementem nadrzędnym do tego, który jest ustawiony absolutnie. Jeśli ustawię go na pozycjonowanie względne, wyrenderuje styl zastosowania jQuery. –

Odpowiedz

-1

Dobrze to działa na mnie w Safari 5.1.7

Z mojego doświadczenia, kiedy .css() nie próbuję z .animate() z 0 jako czas (Instant)

Spróbuj coś takiego i każ mi znać, jeśli to działało (Testowany w Safari 5.1.7 i pracował)

 $(document).ready(function(){ 
      $("#element").animate({ 
       left: '+=103px' 
      }, 0); 
     }); 
11

i w obliczu tego problemu raz i kończy się przy użyciu addClass i removeClass na pojemniku elementy macierzystej.

spróbować tej

$("#element").css('left', '103px').parent().addClass("dummyClass").removeClass("dummyClass"); 

jeśli to nie działa follwoing zadziała na pewno.

$("#element").css('left', '103px'); 
$("body").addClass("dummyClass").removeClass("dummyClass"); 

problem zostanie kiedyś safari nie przerysować stronę kiedy zmienić CSS więc musimy wymusić odświeżanie

+0

stary, jesteś ratownikiem! $ ("body"). AddClass ("dummyClass"). RemoveClass ("dummyClass"); działa – AdamV

+1

cieszę się, że ci pomogło. tak, w pewnym momencie bezpośredni rodzic nie powoduje problemu, więc musisz przejść poziom wyżej. zazwyczaj ciało rozwiązuje problem. jedyny przypadek, w którym widzę dodawanie klasy na ciele nie działa, gdy masz element wewnątrz td iw tym przypadku potrzebujesz dodać/usunąć klasę lub czasami dodać/usunąć align atrybutów na td. – gaurang171

0

! Important powinno wystarczyć

$("#element").css('left', '103px !important'); 
0

miałem podobny problem wdrażanie paska postępu wideo. Element, który chciałem postawić niech był w DIV z "display: table-caption;" Po przeczytaniu komentarza @ gaurang171 na temat elementów td, musiałem usunąć ten element ze stołu div i ustawić "display: block;" a pozycja elementu zaktualizowana bez potrzeby stosowania dummyClass. Blok z wyświetlaczem: blok w nagłówku tabeli nie działał, musiał być całkowicie poza stołem.

Powiązane problemy