2011-11-16 32 views
2

我正在创建一个活动生成器创作工具。用户使用右键单击菜单可以选择添加一些元素到页面中,并且其中一些元素用文本填充。克隆jquery draggable也拖动它的原始版本

使用Jquery UI,所有元素都是可拖动的,有些可调整大小。我希望用户能够制作一个元素的精确副本,但是当我使用克隆功能时,我会得到奇怪的结果。我可以将原件从克隆中拖出来,但是当我尝试拖动克隆时,它只是拖动原件并保持原位。

继承人我的代码

function addobject (element_type){ 
     $('#activitystage').append($("<div class=\"draggable " + element_type + "\" id=\"" + counter + "\"></div>")); 
     $("#" + counter).multidraggable({ containment: "#activitystage", grid: [10, 10],drag: function(event,ui){ showpositions(); }}); 
     $('#' + counter).contextMenu({menu: 'functionsMenu' }, function(action, el, pos) {run(action, el); }); 
     $('#' + counter).append("<textarea class=\"" + element_type + "\"></textarea>"); 
    } 

    function run (action, el){ 
     switch (action){ 
      case "clone": 
       $(el).clone(true).attr('id', 'some new id').appendTo('#activitystage'); 
       break; 
} 
+0

你试图reaply对克隆DIV的multidraggable功能? – max4ever

+0

你使用的是什么版本的jQuery? –

+0

另外,如果“计数器”是一个数字,那么你似乎有无效的HTML。 ID不能以数字开头。 –

回答

0

你的问题,我能想到的就是使用克隆(假的),并重新绑定拖放事件的最简单的解决。

试试这个代码

var attr = { containment: "#activitystage", grid: [10, 10],drag: function(event,ui){ showpositions(); }}; 

function addobject (element_type){ 
    $('#activitystage').append($("<div class=\"draggable " + element_type + "\" id=\"" + counter + "\"></div>")); 
    $("#" + counter).multidraggable(attr); 
    $('#' + counter).contextMenu({menu: 'functionsMenu' }, function(action, el, pos) {run(action, el); }); 
    $('#' + counter).append("<textarea class=\"" + element_type + "\"></textarea>"); 
} 

    function run (action, el){ 
     switch (action){ 
      case "clone": 
       $(el).clone(false).attr('id', 'some new id').appendTo('#activitystage').multidraggable(attr); 
       break; 
}