Hola, estoy tratando de colocar el nuevo elemento dom igual que el anterior, y luego ocultar el antiguo para que lo nuevo lo reemplace: http : //jsfiddle.net/jC33F/5/
Aunque si el elemento original tiene margen: jQuery automático no puede recuperarlo. ¿Hay alguna manera de poder determinar si el elemento tiene margen: auto; ?
Editar: Gracias a @Vibhu se me ocurrió esta http://jsfiddle.net/jC33F/43/ horrible: D Y no estoy seguro de que siempre funcione.
Siéntase libre de sugerir algo mejor.
4 respuestas
Esto puede ser una locura, pero ¿qué pasa con algo como esto para verificar que un elemento tiene margin: 0 auto
(parece que no puede encontrar otra forma):
var margin = $("#parent").css("margin");
if($('#parent').position().left*2 == ($('#parent').parent().innerWidth() - $('#parent').outerWidth())) {
margin = "0px auto";
}
$("#positionable").css({
position: $("#parent").css("position"),
top: $("#parent").css("top"),
left: $("#parent").css("left"),
margin: margin
});
$("#parent").hide();
Este código básicamente verifica si el valor izquierdo de #parent es igual a la mitad del espacio entre los 2 bordes de su contenedor. Funcionó para mí en este caso, podría fallar en otros casos.
No me gustó ninguna de estas soluciones. Verificar la hoja de estilo real es una solución. Otra solución que se me ocurrió es almacenar los valores izquierdo / derecho, cambiar temporalmente el valor izquierdo y ver si el valor correcto aún coincide. Si no, entonces está configurado en automático.
var mLeft = el.css('margin-left');
var mRight = el.css('margin-Right');
el.css('margin-left',(parseInt(mLeft)-2)+'px');
var mRightChanged = el.css('margin-Right');
if (mRight != mRightChanged) {
console.log('read element left/right margins as auto');
el.css('margin-left','auto');
} else {
console.log('read element left/right margins as their value');
el.css('margin-left',mLeft);
}
Tenga en cuenta que esta solución es solo para los márgenes izquierdo / derecho.
Pruébelo con position absolute para #positionable
$("#positionable").css({
position: 'absolute',
top: $("#parent").position().top,
left: $("#parent").position().left,
margin: $("#parent").css("margin"),
});
Compruebe si el margen devuelto está vacío funcionaría, supongo
Sin embargo, tenga en cuenta que si no establece ninguna propiedad de margen, esto seguirá configurando la propiedad de margen #positionable
en auto
Editar:
Encontré este complemento jQuery que afirma que puede devolver la propiedad de margen de un elemento
http://www.bramstein.com/projects/jsizes/
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.