无法选择新的动态jQuery UI .sortable元素

时间:2012-06-15 12:05:38

标签: jquery ajax jquery-ui jquery-ui-sortable

我在使用动态创建的DOM元素的jQuery UI .sortable时遇到了一些麻烦。

基本上,我已经创建了一个大型的拖放式表单创建器/编辑器,当一个新的表单元素添加到可放置区域时,它会创建一个div容器(称为.connectedsortable),并在其中创建表单元素(称为.question)。

两个div的外部,.connectedsortable是一个可排序的列表,当页面上有很多这些div时,我可以成功地将.question从一个拖到另一个,因为它们被链接为可排序 - 所以.question移动,而.connectedsortable则不移动,如果.connectedsortable的所有内容都被删除,则.connectedsortable将从DOM中删除。

这就是问题所在。

由于我已经创建了UI,我需要能够从.connectedsortables中转移问题并在页面上移动它们,只要 - 当拖动.question开始时 - 它就足够了。 connectedsortable是在每个现有的.createdsortable之后创建的,然后可以将.question放入其中。

在我的代码中,我有一个在.sortable start上调用的函数,如下所示(以及我已经提取的许多其他代码,因为这个问题不是必需的)

$('.connectedsortable').sortable({
     connectWith : '.connectedsortable',
     start : function(event, ui) {
         createPlaceholders(ui.item);
     }
}).disableSelection();

函数createPlaceholders()则包含以下

function createPlaceholders(widget) {

    var placeholder_html = '<div class="connectedsortable"></div>';

    $('.connectedsortable').each(function() {
        var $this = $(this);
        $this.after(placeholder_html);
    });

    $('#innercontent').children('.connectedsortable:first').before(placeholder_html);
    $('.connectedsortable').sortable('refresh');
};

这会在每个现有的之后成功创建一个新的.connectedsortable,但是我不能将.question放到该容器中。

我认为在函数结束时刷新sortable意味着可以选择它们,但似乎并非如此。这让我真的很难过。

过去有没有人遇到类似的事情?更新.sortable是否有问题,而.sortable已经在做什么,或者沿着那些方向做什么?

0 个答案:

没有答案