incapable d'utiliser jquery DragStop et Redimensionner arrêt des appels d'événements à l'intérieur
-
08-10-2019 - |
Question
J'ai une application où je crée divs en faisant glisser à travers une toile. J'ai besoin ces divs être draggable et redimensionnable. Voici ma fonction:
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 que je serai très reconnaissant. Merci.
La solution
Découvert quel était le problème: je dépendais trop sur $nr_zone
qui s'incrémente avant que les événements se tirés; 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)
and remplacer son utilisation dans le code avec $(zona).attr("id").split("_")[1]
. S'il y a une solution élégante Moer j'aimerais entendre.