后,克隆可放开/排序列表基本上我有拖动的项目列表,最初一个投掷的元素他们被拖进。当一个物品被拖入可投放区时,该可投放物被克隆(在物品被添加之前)并作为新的可投放区被追加。jQuery UI的 - 丢弃事件
在这个剥离下来小提琴看看:http://jsfiddle.net/DKBU9/1/(略排序())
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在功能和运行在下降事件的功能,但我什么也没得到。
最后,我希望能够拖动和“池”列表和克隆的清单自身之间和克隆的列表之间的下降,以及克隆列表中的项目进行排序。
完美的作品,谢谢。我想我现在理解clone()好一点了。我确实读过关于插件的那部分内容,但我对它有所了解。这部分原因是为什么我尝试做类似的递归函数失败。 是否可以添加sortable()到这个?我只是将它链接在droppable()函数的末尾,但draggable()在拖动事件上占优先。 – Bobe
@Bobe - 很高兴帮助。有可能有sortable()和droppable()一起工作。如果您遇到问题,您可能想要发布一个新的SO问题。如果你这样做,你可以在这里发表评论中的链接,我会看看。 – acarlon
我花了很多时间,但没有得到我追求的结果。如果您想查看一下,我已经创建了一个新问题:http://stackoverflow.com/questions/20986157/jquery-ui-make-draggable-element-sortable-within-droppable – Bobe