Atualizando minha memória ao definir a posição, estou chegando tão tarde que não sei se mais alguém a verá, mas -
Eu não gosto de definir a posição usando css()
, embora muitas vezes seja bom. Acho que a melhor aposta é usar o position()
setter da jQuery UI, conforme observado pelo xdazz. No entanto, se a interface do usuário do jQuery não for, por algum motivo, uma opção (mas o jQuery for), prefiro o seguinte:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
Isso tem a vantagem de não definir arbitrariamente $div
o pai de um posicionamento relativo (e se $div
o pai fosse, ele próprio, absoluto posicionado dentro de outra coisa?). Eu acho que o único grande caso extremo é se $div
não tem offsetParent
, não tenho certeza se ele iria voltar document
, null
ou algo completamente diferente.
offsetParent
está disponível desde o jQuery 1.2.6, em 2008, então essa técnica funciona agora e quando a pergunta original foi feita.
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- bom$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- ruim. Aparentemente, se os valores de posição são cadeias , você deve incluir as unidades ou elas não terão efeito.