clone node on drag

强颜欢笑 提交于 2019-11-27 04:36:23

问题


i want to be able to create a copy of the element that i want to drag. im using the standard ui draggable and droppable. i know about the helper clone option. but that does not create a copy. the dragged item gets reverted back to the original position.


回答1:


Mark,

Try this example:

        $(document).ready(function(){
        $(".objectDrag").draggable({helper:'clone'});  

        $("#garbageCollector").droppable({
            accept: ".objectDrag",
            drop: function(event,ui){
                    console.log("Item was Dropped");
                    $(this).append($(ui.draggable).clone());
                }
        });

    });

And the Html looks like this

        <div class="objectDrag" 
        style="width:10%; color:white;border:black 1px solid; background-color:#00A">Drag me</div>

    <div id="garbageCollector" style="width:100%; height:400px; background-color:#333; color:white;"> Drop items on me</div>



回答2:


Since I'm not able to comment (yet) I'll leave this as a separate answer - in case someone, like me, will find this question:

For the question from comment

"But I want the cloned/dropped element to be in the same position it was dropped. do you know how i can do it?"

I've found solution in different SO question, and the answer is to change this line:

   $(this).append($(ui.draggable).clone());

to

   $(this).append($(ui.helper).clone());

(change ui.draggable to ui.helper)

Hope it helps.




回答3:


To re-drag the clone/copy, set the withDataAndEvents argument to true:

$(this).append($(ui.draggable).clone(*true*));


来源:https://stackoverflow.com/questions/623703/clone-node-on-drag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!