Draggable Jquery et suppression d'éléments du DOM

Fermé
marcetiennedesch Messages postés 9 Date d'inscription mercredi 11 janvier 2017 Statut Membre Dernière intervention 17 janvier 2017 - 11 janv. 2017 à 09:29
Nexii Messages postés 333 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 - 19 janv. 2017 à 10:44
Salut !

Pourriez-vous m'aider ?

J'ai plusieurs DIV contenant chacune une image d'un personnage avec son nom.

Chacune de ces DIV est en Draggable, et elles sont toutes contenues dans une DIV générale formant le cadre maximum d'évolution.

Tout fonctionne, mais lorsqu'avec une action en Jquery je supprime l'un des personnages, tous les personnages situées en dessous dans le DOM remontent au niveau de leur position (draggable) à l'écran

Auriez-vous une solution pour éviter ça ?

Voici le code correspondant (ce n'est pas l'original, j'ai recréé le truc en plus simple pour poster)

<div id="contenant">
<div id="perso1" class="move">
<img src=""quot;/styles/perso.jpg" />Perso1</div>
</div>
<div id="perso2" class="move">
<img src=""quot;/styles/perso.jpg" />Perso2</div>
</div>
<div id="perso3" class="move">
<img src=""quot;/styles/perso.jpg" />Perso3</div>
</div>
</div>
<input type="button" id="supp1" value="Supprimer perso1" />
<input type="button" id="supp2" value="Supprimer perso2" />
<input type="button" id="supp3" value="Supprimer perso3" />
<script>
$( function() {
$( ".move" ).draggable();
} );
$('#supp1').click(function() {
$('perso1').remove();
})
$('#supp2').click(function() {
$('perso2').remove();
})
$('#supp3').click(function() {
$('perso3').remove();
})
</script>


merci !
PS : j'ai déjà posté sur d'autres forums, mais ma question devient urgente pour un développement, et je n'ai pas de réponses actuellement
A voir également:

2 réponses

Nexii Messages postés 333 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 549
11 janv. 2017 à 09:56
Bonjour,

En gros, tu nous explique ici que si on admet que tes DIV sont l'un en dessous de l'autre, et que tu supprimes celui du haut (disons le perso 1), le perso 2 prendra sa place et c'est ce que tu ne veux pas ?

Si c'est le cas, plutôt que de supprimer l'élément, tu pourrais changer sa propriété CSS. Je pense à "visible:none". L'élément n'est plus visible, mais il existe toujours dans le DOM et garde ses propriétés CSS width/height.
0
marcetiennedesch Messages postés 9 Date d'inscription mercredi 11 janvier 2017 Statut Membre Dernière intervention 17 janvier 2017
11 janv. 2017 à 10:05
Salut !
Pas exactement, je n'ai pas de problèmes à ce que la div 2 prenne la place de la div 1 dans le DOM, mais c'est juste une question de position à l'écran par rapport à un déplacement avec la souris sur la div qui est 'draggable'

Effectivement le fait de masquer la 1 plutôt que la supprimer pourrait résoudre le truc, mais j'ai besoin qu'elle n'apparaisse plus du tout dans le dom car il s'agit d'un élement de formulaire, qui ne doit pas exister dans le champ POST si on clique sur supprimer le personnage (pour être ensuite traité par PHP)

Pas simple à expliquer !
Bon pour résumer, je cherche simplement à figer une position d'un personnage (en le laissant quand même mobile à la souris)
0
Nexii Messages postés 333 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 549
11 janv. 2017 à 10:08
Je vais tenté d'exprimé ce que j'ai compris :
Lorsqu'un DIV est déplacé, puis que tu supprime un perso, le DIV en question revient à sa place initiale au lieu de resté la où il a été déplacé juste avant ?
0
marcetiennedesch Messages postés 9 Date d'inscription mercredi 11 janvier 2017 Statut Membre Dernière intervention 17 janvier 2017
11 janv. 2017 à 11:51
Non, il ne revient pas à sa position initiale, il remonte de quelques centimètres (la taille de l'autre perso) en hauteur sur la fenetre
0
Nexii Messages postés 333 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 549
Modifié par Nexii le 11/01/2017 à 12:06
0
Nexii Messages postés 333 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 549
Modifié par Nexii le 11/01/2017 à 12:16
La seule solution que je vois, serait d'utiliser le "visibility:hidden", et d'y ajouter une classe pour l'exclure de ton traitement en PHP par la suite.

Ca donne ça :
https://jsfiddle.net/erwntvjw/3/
0
marcetiennedesch Messages postés 9 Date d'inscription mercredi 11 janvier 2017 Statut Membre Dernière intervention 17 janvier 2017
11 janv. 2017 à 19:13
Oui c'est exactement ça
Mais du coup je ne vois pas comment l'exclure en php ?
0