В основном у меня есть список перетаскиваемых элементов и изначально один перетаскиваемый элемент, в который их можно перетащить. Когда элемент перетаскивается в перетаскиваемый объект, перетаскиваемый объект клонируется (до добавления элемента) и добавляется как новая область перетаскивания.
Взгляните на эту урезанную скрипку: http://jsfiddle.net/DKBU9/1/ ( пропущено sortable ())
HTML
<ul id="draggables">
<li>foo1</li>
<li>foo2</li>
<li>foo3</li>
</ul>
<ul class="droppable new">
</ul>
JS
$('#draggables > li').draggable({
appendTo: 'document',
revert: 'invalid'
});
$('.droppable > li').draggable({
appendTo: 'document',
revert: 'invalid'
});
$('#draggables').droppable({
accept: '.droppable > li',
drop: function(event, ui) {
ui.draggable.detach().css({top: 0,left: 0}).appendTo($(this));
}
});
$('.droppable').droppable({
accept: '#draggables > li',
drop: function(event, ui) {
if($(this).hasClass('new')) {
var clone = $(this).clone(true, true);
$(this).removeClass('new').after(clone);
}
ui.draggable.detach().css({top: 0,left: 0}).appendTo($(this));
}
});
Как видите, перетаскивание работает для начальных элементов, но не сохраняется в клоне. Я думал clone(true, true)
скопировал совпадающие и дочерние элементы и их обработчики событий.
Я даже попытался поместить указанный выше JS в функцию и запустить эту функцию в событиях перетаскивания, но ничего не получил.
В конечном итоге я хочу иметь возможность перетаскивать между списком «пул» и клонированными списками и между самими клонированными списками, а также сортировать элементы в клонированных списках.