我在使用带有动态创建的 DOM 元素的 jQuery UI .sortable 时遇到了一些麻烦。
基本上,我创建了一个大型的拖放表单创建器/编辑器,当一个新的表单元素添加到可放置区域时,它会创建一个 div 容器(称为 .connectedsortable),以及其中的表单元素(称为 .问题)。
两个 div 的外部, .connectedsortable 是一个可排序的列表,当页面上有许多这样的 div 时,我可以成功地将一个 .question 从一个拖到另一个,因为它们被链接为可排序 - 所以 .question 移动而 .connectedsortable 没有,如果 .connectedsortable 的所有内容都被删除,则 .connectedsortable 将从 DOM 中删除。
这就是问题所在。
由于我制作的 UI,我需要能够从 .connectedsortables 中转义问题并将它们在页面上移动,如果 - 当开始拖动 .question - 创建一个新的 .connectedsortable 就足够了在每个现有的 .createdsortable 之后,然后可以将 .question 放入其中。
在我的代码中,我有一个在 .sortable 开始时调用的函数,如下所示(以及我提取的许多其他代码,因为它不是这个问题所必需的)
$('.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 是否存在问题?