2010-11-11 15 views
0

J'ai une application où je crée des divs en faisant glisser à travers une toile. J'ai besoin de ces divs pour être draggable et redimensionnable. Voici ma fonction:impossible d'utiliser jquery dragstop et de redimensionner l'arrêt à l'intérieur des appels d'événement

function createDiv($startX, $startY, $stopX, $stopY) { 
    if ($startX==$stopX || $startY==$stopY) 
     return; 

    var zona = $('<div class="zona"></div>'); 
    $(zona).css({position: "absolute", background: "#f81", overflow: "hidden", top: Math.min($startY,$stopY)+"px", left: Math.min($startX, $stopX)+"px",width: Math.abs($stopX-$startX)+"px", height: Math.abs($stopY-$startY)+"px" }); 
    $("#demo").append(zona); 

    $(zona).draggable({ 
     stop: function(){ 
      alert("should store dimensions in a form here"); 
     } 
    }).resizable({ 
     stop: function(){ 
      alert("should store dimensions in a form here"); 
     } 
    }); 

    $nr_zone++; 
} 

Le problème est que, alors que la div sera créé et draggable redimensionnable, le code contenant les fonctions d'arrêt ne fonctionnera pas (à savoir les alertes ne fonctionnera pas).

Si quelqu'un peut repérer le problème, je serai très reconnaissant. Je vous remercie.

Répondre

0

J'ai découvert le problème: je dépendais trop de $nr_zone qui s'incrémente avant que l'un des événements ne se déclenche; Ma solution est de stocker la valeur de $nr_zone dans l'id de l'élément (sth comme $(zona).attr("id","zona_"+$nr_zone) et remplacer son utilisation dans le code avec $(zona).attr("id").split("_")[1].Si il y a une solution plus élégante je serais ravi de l'entendre