小提琴几乎解释了一切:http: //jsfiddle.net/1zqdsar6/3/
我有一个可排序的元素容器,可以放在列表项上。列表项通过选项卡分为几个不同的列表。用户应该能够通过更改选项卡(在拖动项目时将鼠标悬停在选项卡上)并将其放在所需的列表项上,将元素放在所需的列表项上。
我可以在拖动过程中切换选项卡,但是,JQueryUI 不会将新打开的选项卡的列表项识别为可放置。只有在拖动开始时可见的列表项才会被识别为可放置项。有没有办法在拖动过程中“刷新”可放置项目(例如切换选项卡时)?
我注意到,当您在拖动过程中切换到选项卡并将元素移动到最右边时,水平滚动条就会出现,然后新打开的选项卡的列表项变为可放置的。这可能是对可能解决方案的提示。
谢谢你的帮助!
编辑:我知道 refreshPositions: True,但这非常慢。选项卡更改触发刷新将是我的首选解决方案。
--- JS-Fiddle JS 代码 ---
$("#elemContainer").sortable();
$(".sidebar-list-item").droppable({
accept: ".elem",
hoverClass: "active",
tolerance: "pointer",
drop: function (event, ui) {
ui.draggable.remove();
},
});
$(".sidebar-tab").droppable({
// make tabs droppable, to detect, when to switch to different list
accept: ".elem",
tolerance: "pointer",
over: function (event, ui) {
$(this).tab("show");
}
})
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
// tab was switched
console.log($(e.target)); // activated tab
e.relatedTarget // previous tab
})