拖放到动态创建的 div 后,Jquery-ui 可拖动无法正常工作

Posted

技术标签:

【中文标题】拖放到动态创建的 div 后,Jquery-ui 可拖动无法正常工作【英文标题】:Jquery-ui draggable not working after dropping into dynamically created div 【发布时间】:2017-02-16 10:01:12 【问题描述】:

一旦将 div 拖放到可放置的绑定 div 中,我就无法拖动它。

我有多行设置为可放置,其中插入了文本框、复选框等控件。每个控件都用可拖动的 div 包裹。

第一次将列拖放到可放置的绑定 div 中时,它工作正常,然后可拖动停止。我试图在一个 div 被删除后重新初始化可拖动,但它也没有成功。

下面是我如何为每一列实现的,然后将它们附加到一个容器中进行渲染:

function buildRow()

   var formRow = $("div").attr('id', 'mainform')
                    .attr('rowIndex', rowIndex)
                    .attr('class', 'formrow ')
                    .attr('style', 'width: 100%;min-height:100px)
                    .droppable(
                        accept: "#formColumn",
                        drop: function (event, ui) 

                            $(ui.draggable).draggable('destroy').draggable(
                                containment: $('#formControlsPlaceholder'),
                                cursor: 'move'
                            );

                        
                    );

var formColumn = $('<div>')
                    .attr('id', 'formColumn')
                    .attr('style', 'width:80%;max-width:100%;')
                    .draggable(
                        containment: $('#container'),
                        cursor: 'move'
                    );
 

【问题讨论】:

【参考方案1】:

实际上问题不在于可拖动。在将元素或控件拖放到新行时,我使用 attr('style') 为其中的所有元素提供相等的宽度。但我不知道设置 attr('style') 会替换所有现有样式,结果 Draggable 与 DOM 的绑定也被破坏了。

一旦我用 css('width', 'sth') 替换了 attr('style') ,它就起作用了。

:D

迪拉吉·达卡尔

【讨论】:

以上是关于拖放到动态创建的 div 后,Jquery-ui 可拖动无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

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

Jquery将div中的文本拖放到较小的div中

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

jQuery-UI 可拖动和可放置项目变为不可拖动

HTML5 将图像从工具栏拖放到画布

动态创建jquery-ui可拖动句柄