Jquery拖放克隆的图像问题

时间:2013-03-27 21:33:31

标签: image drag-and-drop resize clone

我正在进行拖放项目,需要将可调整大小的图像的克隆拖到dropzone。一旦它被删除,我希望克隆也可以调整大小和拖动。我不想创建克隆的克隆...只是能够移动它。我的目标是使图像的每个克隆独立于原始图像。我的想法是我指定了原始的id,并在删除每个克隆时更改id。我已经研究并注意到,一般的建议是我将图像包装在标签中并使用图像的“alsoResize”调整大小。我的问题是,一旦我创建克隆并删除它,我就不能再调整它或拖动它。这是我正在使用的一些代码......

    <!doctype html>
    <html lang="en">
    <head>  
    <meta charset="utf-8">
    <title>draggable demo</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css">  
    <style>  

        #draggable {    
            width: 100px;    
            height: 100px;    
            background: #ccc;  }  
        #drophere {
            width:600px;
            height:600px;
            border: 1px solid black;
            }

    </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script type="text/javascript">
      // set global id counter
      var gIDCnt = 0;
    </script>
    </head>
    <body style="width: 1000px; height: 800px;"> 

   <div id="draggable">Drag me</div> 
   <div id="img0" class="imgwrapper">
        <img class= "image" src="koala.jpg" style="height: 100px;" alt="Koala Bear" />
   </div> 
    <script>
     $(function(){

        $( "#draggable" ).resizable().draggable();

        $(".imgwrapper").resizable({
             aspectRatio: true,
             handles: 's,e,se',
             alsoResize: '.image'
        }).draggable({
            helper: "clone",
            revert: "invalid",
            appendTo: "body"
        });

        $("body").droppable({
        accept: ".draggable, .imgwrapper, .onQuestion, .image",
        drop: function (event, ui) {        

            var isOnQuestion = $(ui.draggable).hasClass("onQuestion");
            if (isOnQuestion == true) {
                // Have already dropped this once, don't use clone anymore
                var element = $(ui.draggable);
            } else {
                var element = $(ui.draggable).clone();
            };

             // Set the absolute position of object
            var offset = $(this).offset();
            var pos = $(ui.helper).offset();
            var x = pos.left - offset.left;
            var y = pos.top - offset.top;
            $(element).css({ "left": x, "top": y, "position": "absolute" });

            if (isOnQuestion == false) {
                 //alert("Not on Question");
                 $(element).removeClass("imgwrapper");
                 //$(element).resizable("destroy");
                 //$(element).draggable("destroy");
                 gIDCnt= gIDCnt + 1;
                 var nextID = gIDCnt.toString();
                 var cNextID = "img"+nextID;

                 //alert(" ID: "+cNextID);
                 // Update with new ID
                 $(element).prop("id",cNextID);
                 var curid = $(element).attr("id");
                 $(element).addClass("onQuestion");
                 //alert("id: "+$(element).attr('id'));
                 $(element).children(".image").addClass("imageOn");

                 $(element).children(".image").removeClass("image");
                 //alert("id: "+$(element).attr('id'));
                 var cToResize = "#img"+nextID+" > .imageon";
                 //alert("cToResize: "+cToResize);
                 // Here's where I tried to make resizable
                 //$(element).resizable();
                 //$(element).resizable("option",{
                 // alsoResize: cToResize,
                 // aspectRatio: true,
                 // });
                 $('#'+cNextID).draggable();
                 $(element).css({border: "1px solid red"});

          }     
            $("body").append(element);
        }
       });
    });

    </script>
    </body>
    </html>

我更新每个克隆图像的'id',然后使用新id作为调整大小的选择器进行调整大小。但是,如果我试图破坏新克隆对象的调整大小和可拖动功能,然后尝试调整大小等。什么都行不通你会在我的代码中注意到我已经注释掉了几个警报。我为每个克隆对象添加了一个类(onQuestion),以便我可以检测它之前放入dropzone的时间,以便我不再尝试克隆它。我删除了原始类(imgWrapper)但是当我尝试执行时...

        $(element).resizable("destroy");
        $(element).draggable("destroy");

后面的代码都没有执行。我开始怀疑是否需要使用事件处理程序进行研究。

有人有建议吗?

谢谢, 肯

0 个答案:

没有答案