Refrescando mi memoria en la posición de ajuste, llego a esto tan tarde que no sé si alguien más lo verá, pero ...
No me gusta establecer la posición usando css()
, aunque a menudo está bien. Creo que la mejor opción es usar el position()
setter de jQuery UI como lo señala xdazz. Sin embargo, si jQuery UI no es, por alguna razón, una opción (pero jQuery sí lo es), prefiero esto:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
Esto tiene la ventaja de no establecer arbitrariamente a $div
los padres en un posicionamiento relativo (¿qué pasaría si $div
el padre estuviera, en sí mismo, en una posición absoluta dentro de otra cosa?). Creo que el único caso mayor ventaja es que si $div
no tiene ninguna offsetParent
, no estoy seguro si volvería document
, null
o algo completamente distinto.
offsetParent
ha estado disponible desde jQuery 1.2.6, en algún momento de 2008, por lo que esta técnica funciona ahora y cuando se hizo la pregunta original.
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- bueno$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- malo. Aparentemente, si los valores de posición son cadenas , debe incluir las unidades, o no tendrá ningún efecto.