【发布时间】:2019-08-09 13:52:10
【问题描述】:
我正在制作一个计划器,在其中你有一个分为 3 类的任务列表。此列表中的任何项目都需要能够被克隆并附加到一周中的 7 天中的一个或多个。
所以将它拖到任何一天,都需要克隆它并在它被拖到的那天显示它。到目前为止,我还没有找到一种方法来表明该项目可以附加到 sort4 到 sort10。有没有办法弄清楚你悬停的目标是什么,以便用变量填充 appendTo()?
我当前的代码只允许将一个项目克隆到 7 列中的一列。
我的代码:
Function sortable(){
// the 3 categories of which each item needs to be cloned
$( "#sort1, #sort2, #sort3" ).sortable({
connectWith: ".connectedSortable",
remove: function(event, ui) {
ui.item.clone().appendTo('#sort4');
$(this).sortable('cancel');
}
}).disableSelection();
// on each day, you can drag and drop to any other
day which needs to move the task
$( "#sort4, #sort5, #sort6, #sort7, #sort8, #sort9, #sort10" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
};
我确实设法为我的问题找到了一些可行的解决方案,但我不确定这是最有效的方法。根据光标位置,我可以决定选择器,这样就可以按照我需要的方式对其进行排序。
function sortable() {
$("#sort1, #sort2, #sort3").sortable({
connectWith: ".connectedSortable",
remove: function (event, ui) {
let pos;
let scroll = document.querySelector('.week_planner--container').scrollLeft;
let cursor = (event.pageX - $('.week_planner--container').offset().left) + scroll;
if (cursor >= 0 && cursor <= 170) {
pos = '#sort4';
} else if (cursor >= 171 && cursor <= 340) {
pos = '#sort5';
} else if (cursor >= 341 && cursor <= 510) {
pos = '#sort6';
} else if (cursor >= 511 && cursor <= 680) {
pos = '#sort7';
} else if (cursor >= 681 && cursor <= 850) {
pos = '#sort8';
} else if (cursor >= 851 && cursor <= 1020) {
pos = '#sort9';
} else if (cursor >= 1021 && cursor <= 1190) {
pos = '#sort10';
}
ui.item.clone().appendTo(pos);
$(this).sortable('cancel');
}
}).disableSelection();
$("#sort4, #sort5, #sort6, #sort7, #sort8, #sort9, #sort10").sortable({
connectWith: ".connectedSortable"
}).disableSelection();
};
【问题讨论】:
-
请提供您的 html,或者最好是显示您的问题的演示。
-
我录了一个视频:vimeo.com/352944347
-
我想要的是能够在任何一个工作日复制相同的任务。但是 appendTo("#sort4") 只允许它被排序到“Maandag”,因为它的 id=sort4。
-
就是这样!!!太感谢了!! :D
-
如果您将链接作为答案发布,我会将其标记为有帮助 :) 再次感谢!
标签: javascript jquery jquery-ui-sortable