2010-03-12 5 views
0

Je fais du jeu de plateau et j'utilise jquery ui effet draggable pour les figures. Au démarrage, j'envoie une requête ajax à une autre page où je génère des endroits droppables pour que la figure ne puisse être déplacée que sur ces endroits particuliers, mais le problème est que je dois déplacer la figure deux fois pour prendre effet. Est-ce que quelqu'un sait comment résoudre ce problème?jquery ui drag and drop + problème ajax

Je serais très reconnaissant pour l'aide.

Voici un exemple

$ (» draggable2" .) Draggable ({revenir: 'invalide', début: function (event, ui) {
var droppable_areas = "";

.
for(var i = 0; i < array.length; i++) 
    { 
     //node 
     var val1 = array[i].split(" ")[0]; 

     //node 
     var val2 = array[i].split(" ")[1]; 

     if(val1 == figure_ID) { 
      droppable_areas += val2 + ","; 
     } 

     if(val2 == figure_ID) { 
      droppable_areas += val1 + ","; 
     } 
    } 

    //droppable area 
    $.post("map_positions.php", { droppable_areas: droppable_areas }, 
     function(data) { 
      $("#imap").html(data); 

      $(".droppable").droppable({      
       drop: function(event, ui) {   

        //id draggable element 
        var draggable_ID = ui.draggable.attr("id"); 
        var moveFrom = draggable_ID.split("_")[1];     
        //console.log("Move from: " + moveFrom); 

        $(ui.draggable.element).remove(); 

        //id droppable palces 
        var value = $(this).attr("id"); 
        var moveTo = value.split("_")[1]; 

        //console.log("Move to: " + moveTo); 

        for(var i = 0; i < array.length; i++){ 
         //nod 
         var val = array[i].split(" ")[0]; 

         //nod 
         var val2 = array[i].split(" ")[1];         

         var moveWith = array[i].split(" ")[2]; 

         if(((val == moveFrom) && (moveTo == val2)) || ((val2 == moveFrom) && (val == moveTo))){         

          ui.draggable.attr("id","p_" + moveTo); 

          $("#p_" + moveTo).draggable("disable"); 
          break; 
         }     


        }       


       } 
      }); 

     } 
    ); 


}, 
stop: function(event, ui) 
{ 


} 

});

+0

Pouvez-vous poster un échantillon de code? –

+0

Code postal, toujours! –

Répondre

0

J'ai déjà trouvé une âme dans $ ('. Selector'). Draggable ({refreshPositions: true});