无法将动态创建的droppable中的draggable拖放到另一个droppable中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将动态创建的droppable中的draggable拖放到另一个droppable中相关的知识,希望对你有一定的参考价值。

请参阅jsfiddle

我想添加一个新的divRow in my example),可以通过拖放(jQuery UI)添加到另一个divButton in my example)。

我在辅助函数($row)中创建了新的div(addNewRow)并添加了新的函数来拖放另一个div,就像这样:

$('.rowDashboard').draggable({
        containment: '#content',
        cursor: 'move',
        helper: addNewRow,       
        revert: "invalid",
    });

// helper function
function addNewRow() {
     $row = $(document.createElement('div'));
     $row.attr("id","droppableDiv");
     $row.html("drop here");
     $row.droppable({
        accept: ".buttonDashboard",
       // greedy: true,
        drop: function (ev, ui) {
        alert('ok');                    
        },
    });
     return $row;
}

我期望ok消息会出现divbuttonDashboarddivrowDraggable,但drop函数不会发射。

在辅助函数中添加drop函数是否正确?

如果不正确,那么解决方案是什么?

谢谢你。

答案

我修改了你的jsfiddle和created a new DEMO which works

我已经从droppable函数中删除了helper初始化代码,重新构建了您的代码。

这是修改后的代码:

var rowIndex = 0;
var buttonIndex = 0;

$(init);

function init() {
    $('.rowDashboard').draggable({
        containment: '#content',
        cursor: 'move',
        helper: addNewRow,       
        revert: "invalid",
    });

    $('#content').droppable({
                    greedy: true,
            accept: ".rowDashboard",
            drop: function (ev, ui) {
                ui.helper.attr('style', '');
                $(ui.helper).addClass('rowDraggable');
                $item = $(ui.helper).clone();
                $item.appendTo('#content');
                //console.log('dropped');
                $item.droppable({
                    accept: ".buttonDashboard",
                    greedy: true,
                    drop: function (ev, ui) {
                    alert('ok');                    
                    },
                });
            },
        });       

    //------- buttonDraggable -----------
    $('.buttonDashboard').draggable({
        //containment: '#content',
        cursor: 'move',
        helper: addNewButton,
        //helper: "clone"
    });      
}

function addNewButton() {
    buttonIndex++;
    return '<input type=\'button\' value=\'button ' + buttonIndex + ' \'>   </input>';
}

function addNewRow() {
     $row = $(document.createElement('div'));
     //$row.attr("id","droppableDiv");
     $row.html("drop here");

     return $row;
}

以上是关于无法将动态创建的droppable中的draggable拖放到另一个droppable中的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 的贪婪 droppable 无法按预期工作

如何在一个页面中动态放置多个Droppable来接受不同的Draggable

Jquery UI Droppable revert不能再次删除

使用 .droppable 拖放到 div 中时,jQuery UI 删除元素

如何将变量从 jQuery draggable 传递到 droppable

拖动到滚动 div 时,Scriptaculous Draggable/Droppable 脚本无法正常工作