2012-06-07 11 views
12

Tengo un elemento completamente posicionado que muevo con la ayuda de jQuery utilizando CSS correctamente 'izquierda'.jQuery estilo no se aplica en Safari

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

En Firefox esto funciona como se esperaba. Sin embargo, en Safari puedo ver el estilo que aparece en Web Inspector en element.style, pero el estilo no se actualiza. Si deshabilito (y vuelvo a habilitar) cualquier regla de CSS coincidente (incluso aquellas que no se aplican directamente a mi div), se representa el estilo que se aplica con jQuery.

Estoy ejecutando Safari 5.0.6 en un viejo PowerMac, con jQuery 1.7.2.

+0

¿Qué le parece agregar una clase con la izquierda: 103px; CSS y hacer $ ('emelent'). addClass ('left_class'); ? ¿Eso hará una différance? – Robert

+0

Si está en CSS, funciona, pero quiero poder mover el elemento con jQuery, pero no funciona. –

+0

He rastreado el problema hasta un elemento principal que está absolutamente posicionado. Si configuro el posicionamiento relativo, se renderizará el estilo jQuery aplicado. –

Respuesta

-1

bien que funciona para mí en Safari 5.1.7

En mi experiencia cuando css() falla trato con .animate() con 0 como el tiempo (instantánea)

Prueba algo como esto y hazme saber si funcionaba (probado en Safari 5.1.7 y trabajé)

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

me enfrentaba a este problema de una vez termino usando addClass y removeClass en el envase elementos de matriz.

probar esto

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

si eso no funciona follwoing trabajará con seguridad.

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

el problema está en algún Safari no volver a dibujar la página cuando cambiamos CSS por lo que necesitamos para obligar a volver a dibujar

+0

amigo, eres un salvavidas! $ ("cuerpo"). AddClass ("dummyClass"). RemoveClass ("dummyClass"); trabaja – AdamV

+1

contento de que te haya ayudado. sí, en algún momento el padre inmediato no está causando problema, por lo que debe subir de nivel. generalmente el cuerpo resuelve el problema. el único caso en el que veo que agregar clase en el cuerpo no funciona es cuando tienes un elemento dentro de td y en ese caso necesitas añadir/eliminar una clase o agregar/quitar algún atributo en algún momento alinear en td. – gaurang171

0

! Important debe hacer el truco

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

tuve un problema similar implementando una barra de progreso de video. El elemento que quería posicionar estaba dentro de un DIV con 'display: table-caption;' Después de leer @gaurang171 comentar sobre elementos td, terminé teniendo que eliminar ese elemento de la tabla div y configurar 'display: block;' y la posición del elemento actualizada sin la necesidad de dummyClass. Un div con pantalla: el bloque dentro de la tabla-título no funcionaba, tenía que estar fuera de la tabla por completo.

Cuestiones relacionadas