2017-10-21 40 views
0

J'essaie de créer une page Web dans laquelle l'utilisateur peut ajouter des objets et les faire glisser en utilisant jQuery-UI. Le code utilisé pour ajouter les objets (qui peuvent être des images ou du texte) peut se résumer ainsi:jQuery .append() désactive le positionnement

function createObject($inner) { 
    var $newObject = $("<div></div>").append($inner) 
    .attr(/* some attributes */) 
    .css(/* some css (which makes the position relative) */) 
    .appendTo($father); 
} 

Lorsque je crée le premier objet, je n'ai pas de problème. Cependant, chaque objet ultérieur utilise la fin de l'objet précédent comme il est (0, 0) coordonnent, comme ceci:

+----------++----------+ 
| object A || object B | 
+----------++----------+ 

Les coordonnées de l'objet B sont maintenant (0, 0), même si elle est manifestement pas dans le coin supérieur gauche. Est-ce que quelqu'un sait pourquoi c'est le cas?

+0

Chaque div nouvellement créé est ajouté à tout ce que $ père est (non montré dans la question), donc n'est-il pas normal qu'ils apparaissent les uns après les autres en tant que enfants frères de '$ father'? En ce qui concerne les coordonnées de l'objet B étant (0,0), le commentaire dans le code dit qu'il est 'position: relative', donc son point zéro n'est pas le coin supérieur gauche de son parent et c'est normal aussi ... – nnnnnn

+0

il existe un moyen de faire en sorte que son point zéro est ce coin? – Sponja

Répondre

0

Vous devez utiliser la propriété de position CSS pour être absolue

https://www.w3schools.com/cssref/pr_class_position.asp

position:absolute; 

En outre, vous devez vous assurer que le père de $, vous faites référence est toujours le même. Cela peut être fait en créant un bloc div/container avec position: absolute et ajouter tous les éléments nouvellement ajoutés dans ce blok.

+0

Merci d'avoir répondu, mais cela ne résout pas le problème – Sponja