[英]jQuery Sortable duplicating dropped item in origin list
我在一个页面上有 2 个sortable()
元素, .draggable_to
和.elements_draggable
。 后者是我可以拖到前者的元素。
这是初始化这些的代码:
$('.draggable_to').sortable({
update: function (e, ui) {
if(ui.sender) {
var dropped_elem = $(ui.sender.children()[0].innerHTML);
var html = self.generateElementHTML(dropped_elem.attr('data-type'));
ui.item.html(html);
}
ui.sender.data('copied', true);
}
});
$('.elements_draggable').parent().sortable({
placeholder: 'ui secondary segment green',
connectWith: '.draggable_to',
helper: function (e, li) {
this.copyHelper = li.clone().insertAfter(li);
$(this).data('copied', false);
return li.clone();
},
start: function(e, ui) {
ui.placeholder.html("Add new " + ui.helper[0].innerText + " element.");
}
});
当某些东西从.elements_draggable
拖到.draggable_to
时,应该复制原始元素,然后我用从generateElementHTML()
生成的一些自定义 html 替换所述复制元素。
这可行,但我遇到了.elements_draggable
列表的问题。 出于某种原因,当我开始从.elements_draggable
拖动某些东西时,我可以将该元素放回同一个列表中,并在此过程中复制它。
这里有一些图片,我希望能说明我的意思。
注意:我知道containment
选项,但我不想使用它有两个原因:
.draggable_to
列表的底部。如何防止拖动的元素复制到它们被拖出的同一个列表中?
我可以通过将可拖动对象列表更改为 jquery-ui 的draggable()
而不是sortable()
来解决这个问题。
$('.draggable_to').sortable({
update: function (e, ui) {
var dropped_elem_type = ui.item.attr('data-type');
var html = self.generateElementHTML(dropped_elem_type);
ui.item.attr('style', null);
ui.item.html(html);
}
});
$('.draggable_element').draggable({
connectToSortable: '.draggable_to',
helper: "clone",
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.