11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je ne dois pas être doué mais je n'arrive pas à obtenir une réponse à cette simple question avec une recherche google.

Mon problème est assez simple. J'utilise scriptaculous pour drag & droper une div dans un container.
Une fois dans le container le tout s'aligne correctement pour un bel affichage (en gros j'ai des "contenus" que je mets dans des "slots" prédéfinis)


En l'état actuel ça fonctionne sauf que je veux aller plus loin: Pour pouvoir utiliser la souris sans trembler et pouvoir surligner du texte avec je veux qu'une fois mon draggable placé dans un slot, il ne soit plus draggable et qu'il ne le redevienne qu'à la demande de l'utilisateur.

Je sais qu'il existe des solutions alternatives, comme recopier le contenu de ma div draggable dans une toute nouvelle div puis la supprimer. Cependant j'ai une div avec exactement le contenu attendu, donc pourquoi surcharger l'exécution avec des recopies inutiles? Je pourrais aussi mettre un handler et jouer sur on affichage mais j'ai pas envie!

Bref, je voudrais juste "désinscrire" mon Draggable du système de drag & drop, ce qui dans tous les cas de figures me semble le plus propre.

J'utilise directement un "new Draggable" (c'est à dire que je ne passe pas par la collection Draggables) est-ce là mon erreur?

Merci!
Salut,

Je ne sais pas exactement comment fonctionne le système drag and drop, mais tu pourrais peut être mettre tous tes dragables dans un tableau duquel tu retirerais les éléments plus dragables et tu les réinsèrerais à nouveau si besoin. Dès que la personne lâche l'objet tu le retire du tableau et quand il sélectionne bein il se remet dedans.
Je n'ai pas essayé mais j'ai trouvé ça dans la doc de scriptaculous :

var mydrag = new Draggable('product_1', { revert: true });
mydrag.destroy();


Il faut juste que tu assignes une variable à ton draggable (si ce n'est pas déjà le cas). Et tu utilises mydrag.destroy(); Et pour réassigner bien sûr il faudra refaire un new Draggable.