我在使用动态创建的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已经在做什么,或者沿着那些方向做什么?