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 $divlos padres en un posicionamiento relativo (¿qué pasaría si $divel padre estuviera, en sí mismo, en una posición absoluta dentro de otra cosa?). Creo que el único caso mayor ventaja es que si $divno tiene ninguna offsetParent, no estoy seguro si volvería document, nullo 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.