IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Rendre "droppable" une div généré par Ajax


Sujet :

jQuery

  1. #1
    Membre du Club Avatar de Freeluvs
    Profil pro
    Inscrit en
    Février 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 78
    Points : 57
    Points
    57
    Par défaut Rendre "droppable" une div généré par Ajax
    Bonsoir à tous,

    J'ai découvert il y a peu l'excellent jQuery UI, et surtout les possibilités qu'il offre pour faire du Drag and drop.
    Voila mon soucis: j'arrive à utiliser sans soucis les fonctionnalités "draggable" et "droppable" de jQueryUI sur des <div>, mais dès que ses <div> sont générés en ajax (j'utilise la bibliothèque xAjax), impossible de les rendre "droppable".

    En cherchant un peu dans la doc j'ai vu qu'il existait pour "draggable" la méthode refreshPosition, qui à chaque mouvement de souris rafraichis la liste des cible "droppable", mais ça ne fonctionne pas pour moi.
    J'ai vu aussi que certains parlait de détruire les anciens éléments "droppable" et de les redéfinir, mais idem sans résultat.

    Niveau code ça donne un truc comme ça :

    -La declaration des drag & drop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <script language="javascript">
    	$(function() {
    		$( "#elem_1" ).draggable({ refreshPosition: true, revert: 'invalid' });
    		$( "#dropZone" ).droppable({
    			activeClass: "ui-state-hover",
    			hoverClass: "ui-state-active",
    			drop: function( event, ui ) {
    			$( this )
    			.addClass( "ui-state-highlight" )
    					 .html( "blabla" );
    			}
    		});
    	});
    </script>
    En résumé la structure de mes div donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div id="elem_1">Blabla</div>
     
    <div id="general">
       <div id="dropZone"></div>
    </div>
    Et ma fonction Ajax qui met à jour la div#general fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    ...
    <div id="dropZone"></div>
    <script language="javascript">
    	$(function() {
    		$( "#dropZone" ).droppable({
    			activeClass: "ui-state-hover",
    			hoverClass: "ui-state-active",
    			drop: function( event, ui ) {
    			$( this )
    			.addClass( "ui-state-highlight" )
    					 .html( "blabla" );
    			}
    		});
    	});
    </script>
    Si je met la div#dropZone en dehors de ce que génère ajax, ça fonctionne sans soucis (par contre je n'arrive pas à récupérer les info dynamique contenu dans div#general).
    Mais dès que je la met dedans, meme si je la redeclare droppable, elle ne l'est pas.

    Si quelqu'un à une idée la dessus, je suis preneur !
    Merci d'avance

    Edit: Je crois avoir trouvé. Quand je met un delais d'éxecution de 2 secondes entres le moment ou ajax change le code et ou j'applique les script qui mettent les droppable, ça fonctionne !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    live()
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/05/2010, 05h16
  2. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  3. [AJAX] Div modifié par Ajax ne s'affiche qu'une seconde
    Par dream_of_australia dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 27/06/2007, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo